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
}
}
)