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

Ser*_*dar 14 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);
Run Code Online (Sandbox Code Playgroud)

Ofi*_*fir 17

新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);
Run Code Online (Sandbox Code Playgroud)


mne*_*syn 14

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

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

MyCollection.Update(Query.EQ("_id", MyObject.Id), 
                    Update.PushWrapped("MyArray", myArrayField)
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢。但是对于 Update.PushWrapped 我应该参考什么... Intellicense 没有看到它... (2认同)
  • 我认为现在是......新的UpdateBuilder().推送包装在新版本中 (2认同)