2012-12-29 55 views
5

有沒有辦法將Model.findByIdAndUpdateModel.increment()結合起來,這會增加貓鼬原生的versionKey?或Model.update()和任何遞增__vMongoose findByIdAndUpdate()或update()和increment()。如何增加__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

http://stackoverflow.com/questions/7334390/has-mongoose-support-findandmodify-mongodb-method –

回答

4

It's possible that this is by design. In特別是__v是一個特殊的貓鼬內部鍵,其具體用途是防止多個保存操作在文檔的數組元素髮生位置變化時發生碰撞。原子更新操作本身不會受到這種風險的影響,因此它們不需要增加__v

但是可能會將原子更新與非原子查找/保存結構交錯,所以我提交了一個issue供開發人員查看。

相關問題