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
假设 '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