[英]MongoDB C# driver 2.0: How to get the result from MapReduceAsync
[英]c# Mongodb 2.0 driver get UpdateManyAsync result
在更新之前/之前,有什么方法可以获取更新的集合吗? 我能想到的很沉重。
为什么我需要这个?
我有一项不断从数据库中获取数据的服务。 我希望它根据自己的状态来自动获取内容。
例如,如果包含状态字段的文档的状态为1,我希望服务在处理过程中将其获取并原子地将其更改为2,因此每个其他组件由于某种原因都不会覆盖我。
更新如下:
var filter = Builders<ServiceModel>.Filter.And(
Builders<ServiceModel>.Filter.Gt(t => t.EndDate, dueDate),
Builders<ServiceModel>.Filter.Eq(t => t.Status, Enums.ServiceHandleStatus.Registered));
var update = Builders<ServiceModel>.Update.Set(t => t.Status, Enums.ServiceHandleStatus.InProcess);
var options = new UpdateOptions() { IsUpsert = false };
using (var result = this.manager.Trainings.UpdateManyAsync(filter, update, options))
有方向吗?
TIA。
这样的mongodb中唯一的原子更新是使用findAndModify,它在.NET中以FindOneAndUpdate的形式呈现。 因此,您可以执行所需的操作,但一次只能执行一个文档。
更新资料
如果您可以发出多个请求,则可以使用UpdateMany在2个请求中执行此操作,而不仅仅是将它们标记为InProcess,还可以指示正在处理它们的进程。 然后,您可以进行后续查询以返回并拉出当前流程中所有InProcess的查询。
唯一的问题是您不能指示仅更新10、20或10K,这意味着您无法扩展到多个“处理器”,因为您将要更新所有这些处理器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.