MongoDB C# 驱动程序 - 更新而不设置/替换

本文关键字:设置 替换 更新 驱动程序 MongoDB | 更新日期: 2023-09-27 18:35:14

我正在与另一个应用程序共享的MongoDB数据库进行通信,该数据库使用我的应用程序不使用或不关心的一些字段。

在我的整个代码中,我使用 Update.Replace 来更新对象。问题是它用我的 POCO 对象中的文档替换了数据库中的整个文档,导致其他应用程序使用的属性被删除。

我可以做Update.Set,但我必须使用很多次。 Update.Replace非常方便,因为它会自动(通过反射)将 POCO 对象转换为BsonDocument

如何自动生成Update.Set,以便不必为每个成员调用它?

MongoDB C# 驱动程序 - 更新而不设置/替换

事实证明,我必须进行额外的网络调用才能获取整个文档,然后进行替换。

我拿着现有的文件做...

_caseCollection.Update(Query<Case>.EQ(x => x.Id, caseItem.Id), Update.Replace(existingDocument.Merge(caseItem.ToBsonDocument(), true)));

这将保留其他应用程序正在使用的任何字段。