如何使用官方C#驱动程序在MongoDB中使用嵌入式文档更新对文档的多次更改

本文关键字:文档 更新 嵌入式 官方 何使用 驱动程序 MongoDB | 更新日期: 2023-09-27 17:59:25

我想更新文档中不同级别的各个字段,并通过一次调用应用所有更改。理想情况下,驱动程序将遍历具有模型的对象模型。保存(模型)并识别更改,但这似乎对图形中两个级别的更改没有影响。

所以,我现在正试图用这种方法更新整个文档,但它不会产生影响。你知道正确的语法是什么吗?

var models = _database.GetCollection<Model>("Models");
var modelQuery = Query.EQ("_id", new ObjectId("4dfa2601dc1c791d40106a25"));
var model = models.FindOneAs<Model>(modelQuery);
// Apply various changes (including embedded docs)...
var dataRef = model.Objects.Find(Domain.Object.Reference);
dataRef.Set(Domain.Field.Reference.Name, "Some Ref Name");
models.Update(modelQuery, Update.Set("_id", BsonDocumentWrapper.Create(model)));

如何使用官方C#驱动程序在MongoDB中使用嵌入式文档更新对文档的多次更改

在当前mongodb中可以遍历和更新的深度级别有限制。

以这个博客文章为例:

Post{
  comments{
    replies{
      voters:["bob","steve"]
    }
  }
}

您无法更新投票者数组,因为即使使用$operator,它的深度也超过2级。解决方案是为注释创建一个单独的集合。我指的是1.8版

希望这能有所帮助。