2011-05-11 59 views
3

原子更新我知道我可以通過原子設置的特定字段更新現有蒙戈文件。下面的代碼將做到這一點:MongoDB中通過「合併」文件

var update = MongoDB.Driver.Builders.Update.Set("InsideLegMeasurement", 32.4); 
SafeModeResult result = personCollection.Update(query, update, UpdateFlags.Multi,SafeMode.True); 

不過,我可以通過原子傳遞,我要「合併」與現有的DOC文檔中更新幾個領域?想象一下,我有一個文件如下: {「favcolor」:「紅」,「favfood」:「意大利麪」},我想更新這些值將現有文檔。我想這樣做:

var update = MongoDB.Driver.Builders.Update.Merge({"favcolor":"red","favfood":"pasta"}); 

甚至

var update = MongoDB.Driver.Builders.Update.Merge(myUpdateBsonDoc); 

其中myBsonDocument含有大量的領域,我不希望有從能與合併的文檔「解壓」原版的。

這是可能以某種方式?

感謝

回答

4

找到了答案:

//var snippetJSON= '{title:"Tin Machine II",brandnewfield:"this gets added nicely"}'; 
    MongoDB.Bson.BsonDocument updateDoc = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>(snippetJSON); 
var update = new UpdateDocument { { "$set", updateDoc } }; 

容易,當你知道如何!