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

时间:2017-01-22 07:44:26

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

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

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

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

在这种情况下MongoDB会是什么?

最终是否会将最后一个进程覆盖到单个元素中(将该List保留为单个元素)?

或者它将<10>这样的元素(项目)添加到该列表中吗?

1 个答案:

答案 0 :(得分:2)

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

要向数组添加新值,您应使用addToSet operator(仅添加新值)或push operator

您也可以将它们作为Builders访问:

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