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

时间:2011-07-11 11:07:30

标签: c# mongodb mongodb-.net-driver

我在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中运行得很好。

3 个答案:

答案 0 :(得分:16)

它应该是这样的:

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

答案 1 :(得分:9)

我还想说明如何使用不同的语法

来做到这一点
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);

答案 2 :(得分:0)

要使用更新的语法和常规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);