如何为嵌套文档定义猫鼬模式

时间:2019-12-12 07:06:30

标签: mongodb mongoose mongoose-schema

我需要为嵌套文档定义猫鼬模式,如下所示。

文档:

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

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

2 个答案:

答案 0 :(得分:1)

您需要像这样修改架构:

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

这是使用Mongoose创建一系列子文档的方法。如果您不使用“新模式”关键字,则实际上是在创建一个类型为“混合”的字段,这需要一种不同的方式来处理更新。

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

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

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

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

答案 1 :(得分:0)

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