繁体   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