Подтвердить что ты не робот

Как использовать модификатор модификации $push в MongoDB и С# при обновлении массива в документе

Я запустил следующий код в оболочке 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.

4b9b3361

Ответ 1

это должно быть примерно так:

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

Ответ 2

Я также хотел бы проиллюстрировать, как это сделать, используя другой синтаксис

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);

Ответ 3

Для этого с обновленным синтаксисом и регулярным 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);