c# - Builders<TA>.Update.Set() 如何处理并行访问?

标签 c# .net mongodb mongodb-.net-driver

假设“items”(在下面的 Set() 方法中作为参数提供)被定义为列表(TM 是某种结构类型,即仅由属性组成)包含仅一个项目,并且10 个进程试图同时写入对 items 的更新(没有向列表添加任何内容):

Builders<TK>.Update.Set("Items", items);

更新意味着 BSON 中至少有一个元素具有修改后的

MongoDB 在这种情况下会怎样?

它最终是否会用最后一个进程覆盖到那个单个元素(让那个列表只有一个元素)?

或者它会添加 10 个这样的元素(项)到那个列表中吗?

最佳答案

我不知道并行访问是如何工作的。但是Set operator总是用插入的值覆盖值。

要向数组添加新值,您应该使用 addToSet operator (它只添加新值)或 push operator .

您也可以作为构建者访问它们:

Builders<TA>.Update.AddToSet
Builders<TA>.Update.Push

关于c# - Builders<TA>.Update.Set() 如何处理并行访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41788537/

相关文章:

c# - 策略模式还是命令模式?

c# - 通用冒泡排序扩展

c# - 如何检测 libgit2sharp 中的未决更改?

bash - 在centos7 docker镜像上连接到mongodb

mongodb - 使用带有 NoCursorTimeout 的 Tailable 游标时出现“找不到游标”错误

c# - 从 C# 调用非托管 dll。拍2张

c# - 为多行 SQL 创建唯一 ID

.net - 检测 404 而不捕获异常

.net - 如何在图表控件中显示EMGU直方图?

node.js - 使用nodemailer向多个收件人发送邮件