Mongoose findByIdAndUpdate()或update()和increment().如何增加__v?

Max*_*rev 5 mongoose mongodb

有没有办法结合Model.findByIdAndUpdateModel.increment()增加mongoose本机版Key?或者Model.update()任何增量__v

此代码不会增加 __v

Station.update({ _id: req.params.id }, 
               { $set: req.body, $inc: { __v: 1 } }, 
               { multi: false },  callback);
Run Code Online (Sandbox Code Playgroud)

但增加任何自定义Number字段:

Station.update({ _id: req.params.id }, 
               { $set: req.body, $inc: { count: 1 } }, 
               { multi: false },  callback);
Run Code Online (Sandbox Code Playgroud)

到目前为止,我发现只有一种增量方式__v:

Station.findById(req.params.id, function (err, station) {
    station.increment();  // this increments __v
    station.save(req.body, callback)
})
Run Code Online (Sandbox Code Playgroud)

mjh*_*jhm 4

这可能是设计使然。 特别__v是一个特殊的 mongoose 内部键,其具体用途是当文档的 Array 元素发生位置更改时防止多个保存操作发生冲突。原子更新操作本身不会面临这种风险,因此单独而言,它们不需要增加__v.

但是,可以将原子更新与非原子查找/保存结构交错,因此我提交了一个问题供开发人员查看。