update语句中带max条件的MongoDB字段增量
对于MongoDB,我正在寻找将递增字段的原子更新,如果该递增将超过给定的最大值,它将统计该最大值。同样的行为可以通过$inc和$min操作符的组合实现,但遗憾的是,不能在一次原子更新中实现。看看下面的例子 示例文件update语句中带max条件的MongoDB字段增量,mongodb,increment,Mongodb,Increment,对于MongoDB,我正在寻找将递增字段的原子更新,如果该递增将超过给定的最大值,它将统计该最大值。同样的行为可以通过$inc和$min操作符的组合实现,但遗憾的是,不能在一次原子更新中实现。看看下面的例子 示例文件 { "_id": 1, "i": 0 } 询问 db.test.update({_id:1}, {$set:{"a":"foo"}, $inc:{i:1}}); db.test.update({_id:1}, {$min:{i:2}}); db.test.upda
{
"_id": 1,
"i": 0
}
询问
db.test.update({_id:1}, {$set:{"a":"foo"}, $inc:{i:1}}); db.test.update({_id:1}, {$min:{i:2}});
db.test.update({_id:1}, {$set:{"b":"bar"}, $inc:{i:1}}); db.test.update({_id:1}, {$min:{i:2}});
db.test.update({_id:1}, {$set:{"c":"baz"}, $inc:{i:1}}); db.test.update({_id:1}, {$min:{i:2}});
结果文件
{
"_id": 1,
"i": 2,
"a": "foo",
"b": "bar",
"c": "baz"
}
更新
多亏了Christian p的回答,我意识到我忘了再提一个条件。我需要更新文档,因为我需要更新比示例中显示的更多的字段。事实上,我需要update语句中的增量上限(最大)条件。我已经更新了我的示例来说明这一点
您正在寻找一个命令:
只有当
i
不大于最大给定值时,此查询才会更新文档。谢谢您的回答,您是对的。但我忘了在问题中解释,我实际上需要用查询更新更多字段,所以我不能从更新中排除任何文档。请参阅我的问题更新。
db.test.findAndModify({
query: { _id: 1, i: { $lt: 2 } },
update: { $inc: { i: 1 } }
})