有没有办法合并Model.findByIdAndUpdate
和Model.increment()
,这会增加mongoose native versionKey?或Model.update()
以及__v
的任何增量?
此代码不会增加__v
Station.update({ _id: req.params.id },
{ $set: req.body, $inc: { __v: 1 } },
{ multi: false }, callback);
但会增加任何自定义Number
字段:
Station.update({ _id: req.params.id },
{ $set: req.body, $inc: { count: 1 } },
{ multi: false }, callback);
到目前为止,我发现只有一种方法可以增加__v
:
Station.findById(req.params.id, function (err, station) {
station.increment(); // this increments __v
station.save(req.body, callback)
})
答案 0 :(得分:4)
It's possible that this is by design.特别是__v
是一个特殊的mongoose内部密钥,其特定用途是防止多个保存操作在文档的Array元素发生位置变化时发生冲突。原子更新操作本身不会面临这种风险,因此单独使用它们不需要增加__v
。
然而,可以将原子更新与非原子查找/保存结构交错,因此我提交了issue供开发人员查看。