如何使用官方C#驱动程序在MongoDB中获取最新更新的文档

时间:2012-11-11 20:41:20

标签: c# .net mongodb mongodb-.net-driver

修改 ========================

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

修改 ========================

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

示例:

示例文件:

{“_ id”:“a ......”,“age”:23,“take”:false}

{“_ id”:“b ......”,“年龄”:25,“拍摄”:真实},

{“_ id”:“c ...”,“age”:27,“take”:false},

{“_ id”:“d ......”,“age”:27,“take”:true},

{“_ id”:“e ...”,“age”:29,“take”:false},

{“_ id”:“f ......”,“age”:29,“take”:false}

代码:

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

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

谢谢,

2 个答案:

答案 0 :(得分: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#文档为here,有关findAndModify的一般信息为here

答案 1 :(得分:2)

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