单个MongoDB查询,多条件更新

时间:2019-01-14 09:07:24

标签: c# mongodb

我正在尝试根据数据库的当前“状态”更改数据。

DB:{ID:string,Balance:long}

我的逻辑如下:

案例1:余额> =上限---->余额(不执行任何操作)

案例2:余额<上限和&余额+附加<=上限---->余额+附加(更新为新值)

案例3:余额<上限和&余额+其他>上限---->上限(更新为上限值)

*变量“ cap”和“其他”来自其他来源。

为避免争用情况,并且由于查询是原子的。我想使用它本身的查询来操作数据库中的数据。

var filter = Builders<BalanceDbDocument>.Filter.Where(d => d.ID == $"{ID}" && d.Balance + additional <= cap);
var update = Builders<BalanceDbDocument>.Update.Inc("Balance", additional);
BalanceDbDocument docz = await _mongoCollection.FindOneAndUpdateAsync(filter,update, cancellationToken: cancellationToken);

因此,当前代码应仅支持情况1和2。

0 个答案:

没有答案