我正在尝试替换以下代码:
var R = Challenges.FindAll().SetSortOrder("UseCount").First();
var Q = Query.EQ("_id", R._id);
var U = Update.Inc("UseCount", 1);
Challenges.Update(Q, U);
return R;
这是意图:
我在数据库中有一个名为' UseCount'我想找到价值较低的记录。如果许多记录具有相同的值,我只想要第一个(它不重要)
我希望同时增加“使用数量”。一个字段。
我见过 FindAndModify 的例子,但它似乎与字段比较(即:"字段" =值),而不是像我一样的搜索。
处理此问题的最佳/最有效方法是什么?
答案 0 :(得分:6)
以下代码(C#MongoDB.Driver 2.0)
var collection = database.GetCollection<BsonDocument>("product");
var filter = new BsonDocument();
var update = Builders<BsonDocument>.Update.Inc("UseCount", 1);
var sort = new FindOneAndUpdateOptions<BsonDocument>
{
Sort = Builders<BsonDocument>.Sort.Ascending("UseCount")
};
await collection.FindOneAndUpdateAsync(filter, update, sort);