MongoDB $set: обновление документов

Оператор $set в MongoDB используется в методах обновления для установки значений конкретных полей. Если поля уже существуют в документе, их значения заменяются предоставленными.

Пример обновления

Метод update требует как минимум двух аргументов: запрос и объект обновления. Дополнительный аргумент — параметры обновления (опционально).

Пример:

db.collection.update(
  { index: 3 }, // Запрос (найти документы с index = 3)
  { $set: { cartID: 325, customer: { name: "Имя", email: "email@example.com", age: 25 }, cart: [] } } // Объект обновления с оператором $set
)

Здесь:

  • { index: 3 } — запрос, выбирающий документы с полем index, равным 3.
  • { $set: { … } } — объект обновления, использующий оператор $set.
  • Внутри $set устанавливаются значения для полей cartID, customer (вложенный объект) и cart (пустой массив).

Используется точечная нотация в именах полей (например, customer.name или customer.email). В примере устанавливается всё содержимое поля customer, поэтому точечная нотация не применяется.

Применение в коллекции shopping_cart

Предположим, есть коллекция shopping_cart с пятью документами, индексы от 1 до 5. Создайте коллекцию и добавьте документы, если её нет.

Обновление документа:

db.shopping_cart.update(
  { index: 2 }, // Запрос
  { $set: { cartID: 325, customer: { name: "Mike Foster", email: "m.foster@test.com", age: 27 }, cart: [] } }, // Обновление
  {} // Опции обновления (пустой объект)
)

Этот код обновит документ с индексом 2, установив значения для полей cartID, customer (объект с полями name, email и age) и cart.

Результат: updated 1 existing record.

Проверка с помощью find:

db.shopping_cart.find({ index: 2 })

Покажет обновлённый документ. db.shopping_cart.find() покажет, что остальные документы не изменились.

Оператор $set в MongoDB — простой и эффективный способ обновления значений полей в существующих документах. Точечная нотация позволяет работать со вложенными полями, а третий аргумент в методе update управляет дополнительными параметрами обновления.

Что будем искать? Например,программа