提问者:小点点

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


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

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

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

我很难获得刚刚修改的文件。

示例:

样本文件:

{"_id":"a…","age": 23,"采取":假}

{"_id":"b…","年龄": 25,"采取":真},

{"_id":"c…","age": 27,"采取":假},

{"_id":"d…","age": 27,"采取":true},

{"_id":"e…","age": 29,"采取":false},

{"_id":"f…","age": 29,"采取":假}

代码:

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

我需要一种方法来获取被“拿走”的记录,有办法吗?

谢谢你,


共2个答案

匿名用户

您可以使用“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的一般信息在这里。

匿名用户

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