5

有没有办法组合Model.findByIdAndUpdateModel.increment()增加猫鼬原生版本密钥?或者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)
})
4

1 回答 1

4

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

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

于 2012-12-30T20:34:00.673 回答