2017-05-03 1 views
0

の値を取得する私は、フィールドの値を大きくするために、次の株式会社ステートメントを使用して更新を行う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); 
関連する問題