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