Оператор $push добавляет элементы в существующий массив. Если массив не существует, он создаётся автоматически.
Синтаксис
Синтаксис $push: $push: { <поле_массива>: <значения> }. Ключ — имя поля массива, значение — добавляемые элементы.
Примеры
Добавление одного элемента:
Этот пример добавляет строковый элемент "item 1" в массив cart документа с _id: 561. Можно использовать значения других типов.
db.collection.updateOne(
{ _id: 561 },
{ $push: { cart: "item 1" } }
)
Добавление нескольких элементов с $each:
Добавление элементов "item 2" и "item 3" в массив cart с помощью модификатора $each.
db.collection.updateOne(
{ _id: 561 },
{ $push: { cart: { $each: ["item 2", "item 3"] } } }
)
Пример модификации документа:
Сначала удалим существующий массив cart:
db.collection.updateOne(
{ index: 1 },
{ $unset: { cart: "" } }
)
Затем добавим "item 1":
db.collection.updateOne(
{ _id: 561 },
{ $push: { cart: "item 1" } }
)
Добавим "item 2":
db.collection.updateOne(
{ _id: 561 },
{ $push: { cart: "item 2" } }
)
И несколько элементов с помощью $each:
db.collection.updateOne(
{ _id: 561 },
{ $push: { cart: { $each: ["item 3", "item 4", "item 5"] } } }
)
Дубликаты
Добавление уже существующего элемента приводит к его повторному добавлению. Например, повторное добавление "item 2" создаст два элемента "item 2" в массиве cart.
db.collection.updateOne(
{ _id: 561 },
{ $push: { cart: "item 2" } }
)
Для предотвращения дублирования используйте оператор $addToSet.
$push — эффективный инструмент для работы с массивами в MongoDB. Он добавляет элементы, создавая массивы при необходимости, и поддерживает модификаторы. Для предотвращения дубликатов используйте $addToSet.