我想用C#驅動程序更新(類型)MongoDB集合中的一行。在處理MongoCollection<User>
類型的特定集合的數據時,我傾向於避免從集合中檢索敏感數據(鹽,密碼哈希等)。MongoDB:只更新特定字段
現在我試圖更新User
實例。但是,我從來沒有真正檢索到敏感數據,所以我想在檢索模型實例(據我所知)中,這個數據應該是default(byte[])
,然後我應用修改並將新數據提交給集合。
也許我在監督MongoDB的C#驅動程序怎麼用MongoCollection<T>.Save(T item)
沒有更新的具體性能,如User.PasswordHash
或User.PasswordSalt
一些小事?我應該先檢索完整記錄,更新那裏的「安全」屬性,然後寫回來?還是有一個奇特的選擇從更新中排除某些字段?
在此先感謝
感謝您指出了這一點。但是我的根本問題仍然存在:我希望更新我的類型'MongoCollection'中的所有屬性和'T'實例的值,除了一組特定的已知字段。 'Update .EverythingFrom(someObject).Except(x => x.ExceptThis).Except(x => x.ExceptThat)' –
Manny
2013-02-16 10:28:21
這是您需要編寫的一項自定義作業(EverythingFrom ..) 。在客戶端不難做到,通過遍歷BsonMemberMap並獲取所有映射成員,然後只有在知道該值發生更改時才從每個成員創建Update.Set()。它不能保證一致性,因爲自從您將記錄讀入內存之後,數據庫可能發生了變化。 – 2013-02-25 16:48:14