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

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

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

现在我在MongoDB集合中有类似的东西:

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

正如你所看到的, loves是一个arrays。

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

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

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

它应该是这样的:

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

我还想说明如何使用不同的语法来完成它

 var filter = Builders .Filter.Eq(e => e.Name, "Aurora"); var update = Builders.Update .Push(e => e.Likes, like); await fantasyContext.Unicorns.FindOneAndUpdateAsync(filter, update); 

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

 var filter = Builders.Filter.Eq("name": "Aurora"); var update = Builders.Update.Push("loves", "sugar"): // you can also use the async update method from Alex's answer here var result = fantasyContext.Unicorns.UpdateOne(filter, update);