Я знаю, что это может быть глупый вопрос, но я читал в электронной книге, что есть опция upsert в mongo insert. Я не мог найти надлежащую документацию об этом. Может ли кто-нибудь просветить меня об этом?
Есть ли опция "upsert" в команде mongodb insert?
Ответ 1
Так как upsert определяется как операция, которая "создает новый документ, когда документ не соответствует критериям запроса", в insert нет места для upserts. Это опция для команды update. Если вы выполняете команду, как показано ниже, она работает как update, , если есть документ, соответствующий query, или как insert с документом, описанным update в качестве аргумента.
db.collection.update(query, update, {upsert: true})
MongoDB 3.2 добавляет replaceOne:
db.collection.replaceOne(query, replacement, {upsert: true})
который имеет подобное поведение, но его replacement не может содержать операторы обновления.
Ответ 2
Как и в ссылках, предоставленных PKD, db.collection.insert() не дает возможности увеличить. Вместо этого mongo insert вставляет новый документ в коллекцию. Upsert возможен только с помощью db.collection.update() и db.collection.save().
Если вам удастся передать документ в db.collection.insert(), который уже находится в коллекции, и, таким образом, имеет _id, аналогичный существующей _id, он будет генерировать дублирующее ключевое исключение.
Ответ 3
Google "mongodb upsert", bang 3-й результат:) docs.mongodb.org/manual/reference/method/db.collection.update
Ответ 4
Ищите текст "upsert" на этих двух страницах: