如何在一个[原子]声明中使用Mongo:
insert mytable set MyUniqueKey = ?, X = ? on duplicate key update Y = ?
第一次执行此语句时,它将设置X值,但之后只会更新Y值。
只有MyUniqueKey是唯一键的一部分,应该查找重复项。
答案 0 :(得分:15)
您正在寻找Update
命令中的upsert option。这里的文档应该足够了。
答案 1 :(得分:5)
我在mongodb用户组上问过这个问题,答案是这是不可能的,这是一个开放的issue。
答案 2 :(得分:2)
来自
我会称之为" MyCollection"而不是" mytable"。 您可以执行以下操作:
db.mycollection.update(
{ MyUniqueKey: "?" },
{
$set: {"y": "?"},
$setOnInsert: {
MyUniqueKey: "?",
"x": "?",
},
{ upsert: true }
)
基本上$ set总是运行,除非文档不存在。然后$ setOnInsert将运行。