2013-05-07 52 views
0

這裏是我的代碼片段:在C#Mongodb驅動程序中,未知區域如何進行部分更新不變?

var query = Query<MyData>.EQ(e => e.key, key); 
var entity = collection.FindOne(query); 

if (entity != null) 
{ 
    entity.Value = "abc"; 
    // there are another 20 assignments here 
    // ... 
    collection.Save(entity); 
} 

如果集合在MyData的對象沒有定義等多個領域,這將消滅這些領域。有沒有辦法離開未在MyData類中定義的字段?

回答

0

我想通了。當指定查詢對象,使用非強類型樣式這樣

var query = Query.EQ("myID", obj.myID); 

代替

var query = Query.EQ<MyObject>("myID", obj.myID); 

,並指定字段更新查詢更新這樣

var update = Update.SetWrapped("fieldName", obj.fieldName).SetWrapped(...)...SetWrapped(...); 
collection.Update(query, update); 

所以正在更新的mongo文檔中的未知字段不會被清除。我相信這是因爲查詢對象中的非強類型風格不會強制匹配名稱。

感謝並希望這可以有助於任何其他人有同樣的問題。

相關問題