Car*_*uin 5 upsert mongodb findandmodify
我想创建一个从 1000 开始的计数器。
即upsert一个mongodb文档如下
以下不起作用:
environment_data:PRIMARY> db.test.findAndModify
({query:{key:"mycounter"},
update:{$inc:{value:1}, $set:{value:1000}},
upsert:true})
Error: findAndModifyFailed failed: {
"errmsg" : "exception: Cannot update 'value' and 'value' at the same time",
"code" : 16836,
"ok" : 0
}
Run Code Online (Sandbox Code Playgroud)
有没有办法告诉 upsert 对于插入,它需要 $set 1000 ,但对于更新,它需要 $inc 1 ?
您不能在一个原子操作中对同一字段执行多个更新操作,您需要为此发出两个更新查询:一个使用运算符检查该value字段是否存在$exists,然后在更新中使用该$inc运算符,另一个查询检查如果该字段不存在value,则设置新值 1000。
db.test.findAndModify({
query: { key: "mycounter", value: { $exists: true, $ne : null } },
update: { $inc: { value: 1 } },
upsert: true
});
Run Code Online (Sandbox Code Playgroud)
和
db.test.findAndModify({
query: { key: "mycounter", value: { $exists: false } },
update: { $set: { value: 1000 } },
upsert: true
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2076 次 |
| 最近记录: |