#node.js #mongodb #mongoose
Вопрос:
Как вставить документ в мангуст, если он не существует, не обновляя существующий, если он уже существует? Я знаю, что если я делаю вставку, он пытается обновить, если существует, и вставляет новый документ, если он не существует. Однако моя ситуация такова, что я просто хочу вставить новый документ, если он не существует, и оставить существующий, не обновляя его.
Ответ №1:
Вы на правильном пути. Вы должны использовать все еще использовать upsert
в update
методе, но также и с $setOnInsert
оператором. Пожалуйста, прочитайте об этом операторе здесь.
Короче говоря, использование этого оператора позволяет выполнять операцию только в том случае, если она приводит к вставке нового документа. В другом случае он просто пропустит.
И да, вы, конечно, можете использовать это с мангустом:
YourModel.update(
{ queryField: 1 }, // query
{ $setOnInsert: { ...newDocument }}, // new doc fields
{ upsert: true } // still use upsert option
);