更新文档中的数组时,如何在 MongoDB 和 C# 中使用 $push update 修饰符

发布于 2024-11-19 10:30:08 字数 470 浏览 3 评论 0原文

我在 mongo shell 中运行了以下代码:

db.unicorns.insert({name:  'Dunx',  loves:  ['grape',  'watermelon']});

现在我的 MongoDB 集合中有类似这样的内容:

{name: 'Dunx', loves: ['grape', 'watermelon']}

如您所见 loves 是一个数组。

问题

如何使用官方 C# 驱动程序编写 C# 代码,该代码执行以下操作:

db.unicorns.update({name: 'Aurora'}, {$push: {loves: 'sugar'}})

上面的代码在 mongo shell 中运行良好。

I've run the following code in mongo shell:

db.unicorns.insert({name:  'Dunx',  loves:  ['grape',  'watermelon']});

and now I've something like this in my MongoDB collection:

{name: 'Dunx', loves: ['grape', 'watermelon']}

As you can see loves is an array.

Question

How can I write C# code, with the official C# driver, that does the following:

db.unicorns.update({name: 'Aurora'}, {$push: {loves: 'sugar'}})

The above code runs just fine in mongo shell.

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

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

发布评论

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

评论(3

花间憩 2024-11-26 10:30:08

它应该是这样的:

unicorns.Update(Query.EQ("name", "Aurora"), Update.Push("loves", "sugar"));

it should be something like this:

unicorns.Update(Query.EQ("name", "Aurora"), Update.Push("loves", "sugar"));
蓝眼睛不忧郁 2024-11-26 10:30:08

我还想说明如何使用不同的语法来做到这一点

var filter = Builders<Unicorn>
             .Filter.Eq(e => e.Name, "Aurora");

var update = Builders<Unicorn>.Update
        .Push<String>(e => e.Likes, like);

await fantasyContext.Unicorns.FindOneAndUpdateAsync(filter, update);

I would like to also illustrate how to do it using a different syntax

var filter = Builders<Unicorn>
             .Filter.Eq(e => e.Name, "Aurora");

var update = Builders<Unicorn>.Update
        .Push<String>(e => e.Likes, like);

await fantasyContext.Unicorns.FindOneAndUpdateAsync(filter, update);
抹茶夏天i‖ 2024-11-26 10:30:08

要使用更新的语法和常规 BsonDocument 而不是定义的对象来执行此操作,请使用以下命令:

var filter = Builders<BsonDocument>.Filter.Eq("name": "Aurora");
var update = Builders<BsonDocument>.Update.Push("loves", "sugar"):

// you can also use the async update method from Alex's answer here
var result = fantasyContext.Unicorns.UpdateOne(filter, update);

To do this with the updated syntax and regular BsonDocuments instead of defined objects, use the following:

var filter = Builders<BsonDocument>.Filter.Eq("name": "Aurora");
var update = Builders<BsonDocument>.Update.Push("loves", "sugar"):

// you can also use the async update method from Alex's answer here
var result = fantasyContext.Unicorns.UpdateOne(filter, update);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文