Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
update语句中带max条件的MongoDB字段增量_Mongodb_Increment - Fatal编程技术网

update语句中带max条件的MongoDB字段增量

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

对于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.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 } }
})