通过“合并”进行 MongoDB 原子更新文档

发布于 2024-11-06 07:12:21 字数 677 浏览 0 评论 0原文

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

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

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

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

或者甚至

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

在 myBsonDocument 包含很多字段的情况下,我不想从要与原始文档合并的文档中“解压”这些字段。

这有可能吗?

谢谢

I know that I can atomically update an existing Mongo document by setting specific fields. The following code will do it:

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

However, can I atomically update several fields by passing in a document that I want to 'merge' with the existing doc? Imagine I have a document as follows:
{"favcolor":"red","favfood":"pasta"} and I want to update an existing doc with these values. I want to do this:

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

or even

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

where myBsonDocument contains lots of fields which I don't want to have to 'unpack' from the doc that is to be merged with the original.

Is this possible somehow?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凉城凉梦凉人心 2024-11-13 07:12:21

找到答案:

//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 } };

只要你知道怎么做就很容易!

Found the answer:

//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 } };

Easy when you know how!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文