簡體   English   中英

MongoDB:如果不存在則插入文檔,但如果已存在則跳過更新

[英]MongoDB: Insert a document if not exist, but skip updating in case it already exists

如果文檔不存在,如何在 mongoose 中插入文檔而不對現有文檔進行更新(如果它已經存在)? 我知道如果我執行 upsert,它會嘗試更新(如果存在)並插入新文檔(如果不存在)。 但是,我的情況是我只想插入一個新文檔(如果不存在)並保留現有文檔而不更新它。

你走對了。 您應該在update方法中仍然使用upsert ,但也應該使用$setOnInsert運算符。 在此處閱讀有關此運算符的信息。

簡而言之,使用此運算符允許您僅在導致插入新文檔時執行操作。 在其他情況下,它將簡單地跳過。

是的,您當然可以將它與 mongoose 一起使用:

YourModel.update(
  { queryField: 1 }, // query
  { $setOnInsert: { ...newDocument }}, // new doc fields
  { upsert: true } // still use upsert option
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM