创建或智能合并MongoDB
本文关键字:MongoDB 合并 智能 创建 | 更新日期: 2023-09-27 18:13:12
假设这是我的文档:
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);
请注意整个过程是多线程的。因此,每个文档可以从多个线程中修改、删除、插入。在相关数据库中,它是提醒我事务。
寻找实现建议。
谢谢!
您需要构建一个文档更新,它查询现有文档并在找到时添加公式。如果没有,则会插入一个新文档。您可以使用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);