В MongoDB можно добавить элементы из одного массива, которых нет в другом массиве, с использованием оператора $addToSet
внутри запроса обновления (update
).
Оператор $addToSet
добавляет элементы в массив, только если они еще не существуют в нем. Если элемент уже присутствует в массиве, то он будет проигнорирован и не добавлен.
Предположим, у нас есть документ в коллекции myCollection
следующего вида:
{ _id: ObjectId("60e20ec0a29d03e3e3c5c6da"), items: ["a", "b", "c"] }
Теперь давайте рассмотрим пример, который добавляет элементы в массив items
, если их нет в нем:
db.myCollection.update( { _id: ObjectId("60e20ec0a29d03e3e3c5c6da") }, { $addToSet: { items: { $each: ["b", "d", "e"] } } } )
Результатом будет следующий документ:
{ _id: ObjectId("60e20ec0a29d03e3e3c5c6da"), items: ["a", "b", "c", "d", "e"] }
В этом примере мы использовали оператор $each
, который позволяет добавлять несколько элементов в массив одновременно.
Если элемент "b"
уже существует в массиве items
, то он будет проигнорирован при обновлении. Но элементы "d"
и "e"
были успешно добавлены.
Таким образом, использование оператора $addToSet
с $each
позволяет добавлять элементы в массив, которых еще нет в нем, и игнорировать уже существующие элементы.