0

编辑=========================

假设您的集合中有 10 个文档,并且您想在其中保留随机文档,以便没有其他请求也可以使用它,为此我在文档设置后使用原子$set和字段“taken” "taken"true它不再参与查询,所以它不能被任何其他对数据库的请求使用,唯一的问题是它被 "taken" 后我不知道如何获取刚刚的文档已更新。

编辑=========================

我很难获得刚刚修改过的文档。

例子:

样本文件:

{"_id":"a...", "age":23, "taken": false}

{"_id":"b...", "age":25, "taken": true},

{"_id":"c...", "age":27, "taken": false},

{"_id":"d...", "age":27, "taken": true},

{"_id":"e...", "age":29, "taken": false},

{"_id":"f...", "age":29, "taken": false}

编码:

collection.Update(Query.And(Query.GTE("age", 26), Query.EQ("taken", false)), Update.Set("taken", true));

我需要一种方法来获取“拍摄”的记录,有没有办法做到这一点?

谢谢,

4

2 回答 2

3

您可以使用“FindAndModify”方法更新单个文档,然后返回该文档。

var query = Query.And(Query.GTE("age", 26), Query.EQ("taken", false));
var update = Update.Set("taken", true);

var result = collection.FindAndModify(
    query, 
    update, 
    true // return new document
);

var chosenDoc = result.ModifiedDocument;

C# 文档在这里,关于 findAndModify 的一般信息在这里

于 2012-11-12T16:54:37.570 回答
2

C# 驱动程序有一个方法“FindAndModify”,它可以返回最后更新的文档

于 2012-11-12T07:44:06.750 回答