Поделиться через


$[] (оператор обновления массива)

Оператор $[] в Azure Cosmos DB для виртуального ядра MongoDB используется для обновления всех элементов массива, соответствующего указанному условию. Этот оператор позволяет выполнять обновления для нескольких элементов массива без указания их позиций. Это особенно полезно, если необходимо применить одно и то же обновление ко всем элементам в массиве.

Синтаксис

Синтаксис для использования оператора обновления массива $[] выглядит следующим образом:

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

Параметры

Параметр Описание
<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
    }
  }
)