Ответ 1
это должно быть примерно так:
unicorns.Update(Query.EQ("name", "Aurora"), Update.Push("loves", "sugar"));
Я запустил следующий код в оболочке mongo:
db.unicorns.insert({name: 'Dunx', loves: ['grape', 'watermelon']});
и теперь у меня есть что-то подобное в моей коллекции MongoDB:
{name: 'Dunx', loves: ['grape', 'watermelon']}
Как вы можете видеть, loves
- это массив.
Вопрос
Как я могу написать код С# с официальным драйвером С#, который выполняет следующие действия:
db.unicorns.update({name: 'Aurora'}, {$push: {loves: 'sugar'}})
Приведенный выше код работает очень хорошо в оболочке mongo.
это должно быть примерно так:
unicorns.Update(Query.EQ("name", "Aurora"), Update.Push("loves", "sugar"));
Я также хотел бы проиллюстрировать, как это сделать, используя другой синтаксис
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);
Для этого с обновленным синтаксисом и регулярным 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 answer here
var result = fantasyContext.Unicorns.UpdateOne(filter, update);