MongoDB:在重复密钥更新时插入

时间:2012-04-08 01:34:21

标签: mongodb mongodb-query

如何在一个[原子]声明中使用Mongo:

insert mytable set MyUniqueKey = ?, X = ? on duplicate key update Y = ?

第一次执行此语句时,它将设置X值,但之后只会更新Y值。

只有MyUniqueKey是唯一键的一部分,应该查找重复项。

3 个答案:

答案 0 :(得分:15)

您正在寻找Update命令中的upsert option。这里的文档应该足够了。

答案 1 :(得分:5)

我在mongodb用户组上问过这个问题,答案是这是不可能的,这是一个开放的issue

答案 2 :(得分:2)

来自

  

$setOnInsert

我会称之为" MyCollection"而不是" mytable"。 您可以执行以下操作:

db.mycollection.update(
   { MyUniqueKey: "?" },
   {  
      $set: {"y": "?"},
      $setOnInsert: {
          MyUniqueKey: "?",
           "x": "?",
   },
   { upsert: true }
)

基本上$ set总是运行,除非文档不存在。然后$ setOnInsert将运行。