修改 ========================
假设您的集合中有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));
我需要一种方法来获取“被拍摄”的记录,有没有办法做到这一点?
谢谢,
答案 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;
答案 1 :(得分:2)
C#驱动程序有一个方法“FindAndModify”它可以返回上次更新的文档