编辑 ========================
假设你的集合中有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));
我需要一种方法来获取被“拿走”的记录,有办法吗?
谢谢你,
您可以使用“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”它可以返回最后更新的文档