Оператор $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 управляет дополнительными параметрами обновления.