C#MongoDb FindAndUpdate(许多)

C#MongoDb FindAndUpdate(许多),c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,从名称FindOneAndUpdate()我了解到这是一个原子操作 如果我想找到10个项目(限制(10))并将它们全部更新,该怎么办? 例如,将状态字段设置为“进行中” MongoDb在原子上可以实现吗?C#驱动程序中是否有一些内置功能?如果可以避免,我不想自己实现2PC:-) 我还有其他客户要求提供文档,因此我希望避免重复处理,尽管这对我的业务案例并不重要 不使用FindOneAndUpdate()10次的动机纯粹是与网络(更少的闲聊和更好的性能)相关的。我对类似事务的行为没有要求 数据库和商

从名称
FindOneAndUpdate()
我了解到这是一个原子操作

如果我想找到10个项目(限制(10))并将它们全部更新,该怎么办?
例如,将状态字段设置为“进行中”

MongoDb在原子上可以实现吗?C#驱动程序中是否有一些内置功能?如果可以避免,我不想自己实现2PC:-) 我还有其他客户要求提供文档,因此我希望避免重复处理,尽管这对我的业务案例并不重要

不使用
FindOneAndUpdate()
10次的动机纯粹是与网络(更少的闲聊和更好的性能)相关的。我对类似事务的行为没有要求


数据库和商业案例都在我的控制之下,但我被告知许多文档会很快进入和退出。

在MongoDB中,操作仅在每个文档的基础上被视为原子操作。也就是说,如果您使用一条update语句更新文档中的多个字段,您将获得所有更新,或者在更新过程中不查询任何更新。这意味着影响多个文档的更新将不是跨所有文档的原子操作,而是文档中的原子操作

因为听起来您关心的是如何更高效地向服务器发送命令,而不是操作是否是原子服务器端,所以您可以使用它在服务器上执行
IEnumerable
更新

这允许您构建更新列表,并在对服务器的一次操作中执行这些更新。在此过程中必须小心,以正确处理失败的写入。请看一下MongoDB文档