如何使用 C# 驱动程序更新和更新插入 MongoDB 中的多个文档
我正在使用 MongoDB 2,我想更新多个文档并更新插入像 processed:true
这样的值 进入收藏。但是 MongoDB c# api 只允许我们更新多个记录或更新插入单个记录。
如何使用C# api解决这个问题?
I am using MongoDB 2, and I want to update multiple documents and upsert a value like processed:true
into the collection. But MongoDB c# api only allows us to either Update Multiple Records or Upsert a single record.
How to solve this problem using the C# api?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
使用 [email protected] - 尝试initializeUnorderedBulkOp():
Working with [email protected] - try initializeUnorderedBulkOp():
尝试首先从集合中删除要插入的所有项目,然后调用 insert:
Try first removing all items to be inserted from the collection, and then calling insert:
更漂亮、更健壮的方法:
A prettier and more robust approach:
UpdateFlags 是 C# 驱动程序中的一个枚举,可让您同时指定两者。就像任何其他标志枚举一样,您可以通过位“或”来完成此操作。
您可以在此处阅读有关枚举的文档(http://msdn.microsoft.com/en-us/library/cc138362.aspx),特别注意有关枚举类型作为位标志的部分
UpdateFlags is an enum in the C# driver that will let you specify both at once. Just like any other flags enum, you do this by bit "or"ing.
You can read the docs on enums here (http://msdn.microsoft.com/en-us/library/cc138362.aspx) paying special attention to the section on Enumeration Types as Bit Flags
在
Mongo 2.6
之后,您可以执行批量更新/Upserts。下面的示例使用c#
驱动程序进行批量更新。After
Mongo 2.6
you can do Bulk Updates/Upserts. Example below does bulk update usingc#
driver.你不能在一份声明中做到这一点。
您有两个选择
1) 循环所有对象并进行更新插入
2) 找出哪些对象必须更新以及哪些对象必须插入,然后进行批量插入和多重更新
You cannot do it in one statement.
You have two options
1) loop over all the objects and do upserts
2) figure out which objects have to get updated and which have to be inserted then do a batch insert and a multi update
对于使用 2.0 版 MongoDB.Driver 的用户,您可以使用 BulkWriteAsync 方法。
For those using version 2.0 of the MongoDB.Driver, you can make use of the BulkWriteAsync method.