MongoDB C# 驱动程序 - 更新而不设置/替换
本文关键字:设置 替换 更新 驱动程序 MongoDB | 更新日期: 2023-09-27 18:35:14
我正在与另一个应用程序共享的MongoDB数据库进行通信,该数据库使用我的应用程序不使用或不关心的一些字段。
在我的整个代码中,我使用 Update.Replace
来更新对象。问题是它用我的 POCO 对象中的文档替换了数据库中的整个文档,导致其他应用程序使用的属性被删除。
我可以做Update.Set
,但我必须使用很多次。 Update.Replace
非常方便,因为它会自动(通过反射)将 POCO 对象转换为BsonDocument
。
如何自动生成Update.Set
,以便不必为每个成员调用它?
事实证明,我必须进行额外的网络调用才能获取整个文档,然后进行替换。
我拿着现有的文件做...
_caseCollection.Update(Query<Case>.EQ(x => x.Id, caseItem.Id), Update.Replace(existingDocument.Merge(caseItem.ToBsonDocument(), true)));
这将保留其他应用程序正在使用的任何字段。