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

How does Builders<TA>.Update.Set() handle parallel access?

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

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

一次更新意味着BSON中至少有一个元素修改了

在这种情况下MongoDB会怎样?

它最终会用最后一个进程覆盖到那个 单个 元素(让那个 List 只剩下一个元素)吗?

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

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

要向数组添加新值,您应该使用 addToSet operator (it adds only new values) or push operator.

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

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