2011-12-02 10 views
13

私は...サブアレイに挿入を把握することができませんでし新しいアイテムを配列に追加するためにmongodbドキュメントを更新するにはどうすればよいですか?

  • MyArrayという
  • --Item
  • ---- ArrayItemId
  • ----名前
  • _id

    私はmyarrayのためにアイテムを挿入したい

...

私の更新文書はどのようにするべきですか?

MyCollection.Update( 
new QueryDocument { { "_id", MyObject.Id } }, 
new UpdateDocument { { "$set", new BsonDocument { { "MyArray", 
     new BsonArray { new BsonDocument {{ "ArrayItemId", myArrayField.Id }}, 
         new BsonDocument {{ "Name", myArrayField.Name }} }}}}}, 
UpdateFlags.None); 

答えて

14

$push演算子を使用して配列に挿入します。

QueryDocumentUpdateDocumentを使用する必要はありません。

MyCollection.Update(Query.EQ("_id", MyObject.Id), 
        Update.PushWrapped("MyArray", myArrayField) 

PushはMongoDBの中で、単純なフィールドで表現することができるだけで、このようなタイプを受け入れながらPushWrapped<T>は、文書をプッシュすることができますこと:非常に簡単ヘルパー構文があります。新しいMongoDBのC#の非同期アダプタの

+0

感謝。しかし、Update.PushWrappedのために私は何を参照すべきです... Intellicenseはそれを見ていません... – Serdar

+2

私はそれが今...新しいUpdateBuilder()と思う新しいバージョンでPushWrapped – Serdar

9

構文:

var filter = Builders<myObject> 
      .Filter.Eq(e => e.Name, "name"); 

var update = Builders<myObject>.Update 
     .Push<String>(e => e.MyArray, myArrayField); 

await collection.FindOneAndUpdateAsync(filter, update); 
関連する問題