Что такое оператор $addToSet в MongoDB и чем он отличается от $push?

Этот вопрос проверяет знание операторов MongoDB для работы с массивами в документах, а именно различие между $addToSet и $push.

Короткий ответ

Оператор $addToSet добавляет значение в массив, только если его нет в этом массиве, предотвращая дубли. В отличие от него, оператор $push добавляет элемент в массив без проверки на дубли.

Длинный ответ

Что такое $addToSet? Оператор $addToSet используется в MongoDB для добавления значения в массив, только если это значение отсутствует в массиве. Это гарантирует, что в массиве будут храниться только уникальные элементы.

 

Как это работает: MongoDB проверяет, существует ли уже значение в массиве. Если значение есть, оно не добавляется. Если значение отсутствует, оно добавляется в массив.

 

Пример использования $addToSet:

db.collection.update(
  { _id: 1 },
  { $addToSet: { tags: "mongodb" } }
);

Если "mongodb" еще нет в массиве tags, оно будет добавлено. Если же "mongodb" уже есть, массив останется неизменным.

 

Как это отличается от $push?

$push всегда добавляет новое значение в массив, независимо от того, есть ли оно уже в массиве. Это может привести к появлению дубликатов.

$addToSet гарантирует, что в массиве не будет дубликатов, добавляя только уникальные значения.

 

Пример использования $push:

db.collection.update(
  { _id: 1 },
  { $push: { tags: "mongodb" } }
);

В этом примере "mongodb" будет добавлено в массив tags, даже если оно уже там есть.

 

Используйте $addToSet, когда нужно сохранить уникальные элементы в массиве, и $push, когда дубликаты допустимы.

Уровень

  • Рейтинг:

    2

  • Сложность:

    7

Навыки

  • MongoDB

Ключевые слова

Подпишись на Python Developer в телеграм