Как добавить элементы из массива, которых нету в массиве в MongoDB?

В 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 позволяет добавлять элементы в массив, которых еще нет в нем, и игнорировать уже существующие элементы.