首页 > 解决方案 > 如何为嵌套文档定义猫鼬模式

问题描述

我需要为下面给出的嵌套文档定义猫鼬模式。

文件:

"Options":[{"Value":["28","30","32","34","36","38","40","42","44","46"],"_id":{"$oid":"5de8427af55716115dd43c8f"},"Name":"Size"},{"Value":["White"],"_id":{"$oid":"5de8427af55716115dd43c8e"},"Name":"Colour"}]

我在下面声明,但它不起作用。

const Product = new Schema(
  {
    Options: [{ value: { _id: ObjectId, Name: String } }]
  },
  {
    timestamps: {
      createdAt: "createdAt",
      updatedAt: "updatedAt"
    },
    collection: "products"
  }
);

在这里,我需要架构,如果我将直接添加/更新同一个文档,那么它将被添加。

标签: mongodbmongoosemongoose-schema

解决方案


您需要像这样修改您的架构:

{
    Options: [ new Schema ({ value: [...], _id: Schema.Types.ObjectId, Name: String })]
}

这是使用 Mongoose创建子文档数组的方法。如果你不使用“new Schema”关键词,你实际上是在创建一个类型为“Mixed”的字段,它需要一种不同的方式来处理更新。

您也可以省略 _id,它应该会自动添加。

您可以在此页面上找到有关子文档的更多信息: https ://mongoosejs.com/docs/subdocs.html

...以及混合类型字段:https ://mongoosejs.com/docs/schematypes.html#mixed

...这将很快解释这个问题。


推荐阅读