我们假设这是我的文件:
public class ElcoRequest
{
public ObjectId Id { get; set; }
public int Result { get; set; }
public List<string> Equations { get; set; }
}
用户向我发送了许多方程式。我正在解决方程并将结果和源方程保存到MongoDB中的文档中。
现在,许多方程可以得到相同的结果。
在db中创建新文档之前,我想首先检查是否存在相同的结果。如果请求的结果存在,只需使用新的等式修改现有结果。像这样:
doc.Equations.add(newOne);
请注意整个过程是多线程的。因此,每个文档都可以从多个线程中修改\删除\插入。在相关数据库上,它提醒我交易。
寻找实施建议。
谢谢!
答案 0 :(得分:1)
您需要构建一个文档更新,查询现有文档并在找到它时添加方程式。如果它没有插入新文档。您可以使用UpdateFlags.Upsert
标志执行此操作:
collection.Update(
Query.And(Query<ElcoRequest>.EQ(r => r.Id, newRequest.Id),
Query<ElcoRequest>.EQ(r => r.Result, newRequest.Result)),
Update<ElcoRequest>.PushAll(r => r.Equations, newRequest.Equations),
UpdateFlags.Upsert);