Mongodb如果不存在,如何插入(如果存在则不更新)?

时间:2018-01-12 06:23:39

标签: mongodb

如果文档不存在而不更新现有文档(如果存在),如何插入文档?

让我们说我的文件如下:

  {
          "company":"test", 
          "name":"nameVal"
}

我想检查该集合是否包含公司test,如果它不存在我想要创建一个新文档。如果它存在我想做什么都没有。我使用update尝试了upsert = true。但它会更新现有文档(如果存在)。

这就是我的尝试:

db.getCollection('companies').update(
    {
  "company": "test"
  },
  {
  "company": "test",
  "name": "nameVal2"
},
{upsert:true}
)

感谢使用一个查询解决此问题的任何帮助。

2 个答案:

答案 0 :(得分:5)

您可以使用$setOnInsert之类的,

db.getCollection('companies').update(
   {"company": "test"},
   { $setOnInsert: { "name": "nameVal2", ... } },
   { upsert: true }
)

如果此查询未执行插入,则$setOnInsert将不起作用。因此,名称将仅在插入时更新。

答案 1 :(得分:0)

编辑:我被告知我的解决方案仅适用于原始帖子要求的数组。

如果您使用的是数组,则可以使用 $addToSet: 运算符代替 $SetOnInsert。

db.companies.updateOne(
   {"company": "test"},
   { $addToSet: { ["name": "nameValue"]} },
   { new: true })
)