我想在mongoose中创建一个如下所示的文档.有一个pageElements对象,其中包含uuid对象键.

{
    "pageElements": {
        "fc6b151-cd5-3c1-0e00-241b4411d4eb": {
            "containers": {
                "de325a-acb2-e0a1-e521-20b3e81e33f": {
                    "components": [{
                        ...
                    }],
                }
            },
        },
        "075f7c-5aff-c850-a731-a8dff1bea5f8": {
            "containers": {
                ...
            }
        }
    },
}

我试图创建如下模式:


const componentSchema = new mongoose.Schema(
  {
    ...
  },
);

const containersSchema = new mongoose.Schema(
  {
    components: [{ type: componentSchema, required: true }],
  },
);

const pageElementsSchema = new mongoose.Schema(
  {
    containers: { type: containersSchema, required: true },
  },
);

const pageSchema = new mongoose.Schema(
  {
    pageElements: {
      type: pageElementsSchema,
    },
  },
);

但是新创建的文档只包含一个空的pageElements对象.

推荐答案

使用Map作为

const componentSchema = new mongoose.Schema(
  {
    ...
  },
);

const containersMapSchema = new mongoose.Schema(
  {
    components: [{ type: componentSchema, required: true }],
  },
);

const pageElementsMapSchema = new mongoose.Schema({
  containers: { 
    type: Map,
    of: containersMapSchema
  }
})

const pageSchema = new mongoose.Schema(
  {
    pageElements: {
      type: Map,
      of: pageElementsMapSchema
    },
  },
);

Mongodb相关问答推荐

如何使用ID数组对一个集合中的金额求和并更新另一个集合中的字段?

发布到 MongoDB 时生成的附加id字段

mongo如何通过聚合加载嵌套文档

MongoDB:通过嵌套数组中的最后一个元素值获取文档

MongoDB - 家庭作业(job)帮助.不确定如何在 mongodb 中访问文档中的变量

Golang:如何判断 collection.Find 是否没有找到任何文件?

Mongoose 和 MongoDB,如何在具有多个引用的两个模型之间创建关系?

Nestjs中不同语言数据的mongodb聚合代码

如何检索 MongoDb 集合验证器规则?

Mongodb插入没有_id字段的文档

从 mongodb 中的副本配置重新开始

为什么 PyMongo 会抛出 AutoReconnect?

spring-data-mongo - 可选查询参数?

C# mongodb driver 2.0 - 如何在批量操作中更新插入?

如何从 Mongoose 模型对象中获取集合名称

如何通过mongoose更新 mongodb 中的对象?

show dbs 给出Not Authorized to execute command错误

mongodb安装失败运行mongod

MongoDB 引用的最佳实践

MongoMapper 和迁移