2017-05-03 73 views
0

的價值我就與下面的語句INC的更新,增加一個字段MongoDB的C#驅動程序檢索增量更新

var update = Updates.Inc(x => x.Version, 1); 
await collection.FindAndUpdateOneAsync(myQuery,update); 

我想要從版本新(或舊)值的值。有沒有內置的方式來做到這一點?

由於事務性問題,我不想做出新的單獨查詢。

回答

1

您可以試試findOneAndUpdateprojection選項返回文檔。

要返回舊值

db.collection.findOneAndUpdate(
    {}, 
    { $inc: { Version: 1 } }, 
    { projection: { Version : 1 }} 
) 

要返回更新後的值,設定returnNewDocument標誌真

db.collection.findOneAndUpdate(
    {}, 
    { $inc: { Version: 1 } }, 
    { projection: { Version : 1 }, returnNewDocument : true } 
) 

這裏更多 https://docs.mongodb.com/manual/reference/method/db.collection.findOneAndUpdate/

4

這裏是怎麼做Veeram說,但在C# 。

 var update = new UpdateDefinitionBuilder<Widget>().Inc(n => n.Version, 1); 
     var options = new FindOneAndUpdateOptions<Widget>(); 
     options.ReturnDocument = ReturnDocument.After; 
     options.Projection = new ProjectionDefinitionBuilder<Widget>().Include(n => n.Version); 
     var result = col.FindOneAndUpdate<Widget>(n => true, update, options);