如何更新mongodb文档以向阵列添加新项?

时间:2011-12-02 09:33:49

标签: c# mongodb mongodb-.net-driver

我无法找出插入子数组......

  • _id
  • MYARRAY
  • - 物品
  • ---- ArrayItemId
  • ----名称

我想将项目插入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);

2 个答案:

答案 0 :(得分:16)

新MongoDB c#异步适配器的语法:

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

答案 1 :(得分:14)

使用$push运算符完成数组插入。

作为旁注,您无需使用QueryDocumentUpdateDocument。有一个更简单的帮助语法:

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

请注意PushWrapped<T>允许推送文档,而Push只接受可以用MongoDB中的简单字段表示的类型。