$[] (作为数组更新运算符)

Azure Cosmos DB for MongoDB vCore 中的 $[] 运算符用于更新数组中与指定条件匹配的所有元素。 此运算符允许你对数组中的多个元素执行更新,而无需指定其位置。 当需要对数组中的所有项应用相同的更新时,它特别有用。

语法

使用 $[] 数组更新运算符的语法如下所示:

db.collection.update(
   <query>,
   {
     $set: {
       "<arrayField>.$[]": <value>
     }
   }
)

参数

参数 DESCRIPTION
<query> 要更新的文档的选择条件。
<arrayField> 包含要更新的数组的字段。
<value> 要为数组中的每个匹配元素设置的值。

示例

示例 1:更新折扣百分比

假设你想要更新“夏季销售”促销活动中所有类别的折扣百分比。 可以使用 $[] 运算符来实现此目的:

db.stores.update(
  { "store.storeId": "12345", "store.promotionEvents.eventName": "Summer Sale" },
  {
    $set: {
      "store.promotionEvents.$[event].discounts.$[].discountPercentage": 5
    }
  },
  {
    arrayFilters: [{ "event.eventName": "Summer Sale" }]
  }
)

示例 2:按类别更新销售额

如果要将所有类别的总销售额增加 10%,可以使用 $[] 运算符,如下所示:

db.stores.update(
  { "store.storeId": "12345" },
  {
    $mul: {
      "store.sales.salesByCategory.$[].totalSales": 1.10
    }
  }
)