2011-07-11 7 views
12

内の配列を更新するとき、私はモンゴシェルで次のコードを実行しました:、文書

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'}}) 

上記のコードは、モンゴシェルでうまく動作します。

答えて

16

それはこのようなものでなければなりません。私も更新構文と定期BsonDocument秒でこれを行うには

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

このことを現在行う方法mongodbのC#ドライバ2.0.0? –

+0

@Faraz Ahmad以下の回答を参照してください –

6

定義されたオブジェクトの代わりに、以下を使用してください:

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

これは 'Builder 'で行うことができますか?そうでない場合は、オブジェクトを定義するときに何を指定する必要がありますか(この場合はUnicorn)? – arbitrarystringofletters

0

異なる構文を使用してそれを行う方法を説明したいと思い

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