通过``合并''文档进行MongoDB原子更新

Jou*_*man 3 mongodb mongodb-.net-driver

我知道我可以通过设置特定字段来原子地更新现有的Mongo文档。下面的代码可以做到这一点:

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

但是,我可以通过传入要与现有文档“合并”的文档来自动更新几个字段吗?想象一下,我有一个文档如下:{“ favcolor”:“ red”,“ favfood”:“ pasta”},我想用这些值更新现有文档。我想做这个:

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

甚至

var update = MongoDB.Driver.Builders.Update.Merge(myUpdateBsonDoc);
Run Code Online (Sandbox Code Playgroud)

其中myBsonDocument包含很多字段,我不想从要与原始文档合并的文档中“解包”。

这有可能吗?

谢谢

Jou*_*man 5

找到了答案:

//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 } };
Run Code Online (Sandbox Code Playgroud)

当您知道如何时就轻松!