2013-10-14 73 views
2

我正在與另一個應用程序共享的MongoDB數據庫進行通信,該應用程序使用我的應用程序不使用或關心的某些字段。MongoDB C#驅動程序 - 無需設置/替換的更新

在我的代碼中,我使用Update.Replace來更新對象。問題在於它將數據庫中的整個文檔替換爲我的POCO對象中的文檔,導致其他應用程序使用的屬性被刪除。我可以做Update.Set,但我不得不使用那麼多次。 Update.Replace非常方便,因爲它會將POCO對象自動轉換(通過反射)到BsonDocument

如何自動生成Update.Set以便我不必爲每個成員調用它?

+0

請記住,Mongo存儲在'JSON'中,所以默認情況下它是'dynamic'。我的建議是恢復已有的內容,利用「動態」類型,添加屬性,然後保存。這將確保它保留已經存在的對象。 –

+0

我知道。問題是我在整個圖書館使用POCO。 –

回答

1

原來我必須做一個額外的網絡調用來獲取整個文檔,然後做一個替換。

我把現有的文件和做...

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

這將保留,其他應用程序正在使用的任何領域。