创建或智能合并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);

请注意整个过程是多线程的。因此,每个文档可以从多个线程中修改、删除、插入。在相关数据库中,它是提醒我事务。

寻找实现建议。

谢谢!

创建或智能合并MongoDB

您需要构建一个文档更新,它查询现有文档并在找到时添加公式。如果没有,则会插入一个新文档。您可以使用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);