我想不出如何插入子array...

  • _身份证
  • MyArray
  • --项目
  • ----ArrayItemId
  • ----名字

我想将项目插入MyArray...

我的更新文档应该是怎样的?

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

推荐答案

使用$push运算符插入array.

作为补充说明,您不需要使用QueryDocumentUpdateDocument.有一个更简单的助手语法:

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

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

Mongodb相关问答推荐

Mongo聚合项目数组交集

MongoDB 对特定搜索查询的响应时间较长

MongoDB Aggregate 根据时间进行多重分组

MongoDB 聚合 - 条件 $lookup 取决于字段是否存在

MongoDB 按 created_at 月聚合

按数组mongodb中的第一个元素排序

使用 mgo 存储嵌套 struct

Mongoose 和新架构:返回ReferenceError: Schema is not defined

升级mongodb

如何在 mongo JavaScript shell 中中止查询

Mongodb 约定包

如何使用 MongoDB 建模 likes投票系统

如何使用 MongoDB 和 Mongoid 在 Rails 3 上进行适当的数据库测试 (TDD)

Ruby 按键值分组哈希

遍历所有 Mongo 数据库

从 mongo 结果中删除 _id

Mongodb $lookup 使用 _id 无效果

更新时提示Field name duplication not allowed with modifiers

在 mongoose 中使用 UUID 进行 ObjectID 引用

MongoDB Compass:select distinct field values