如何使用猫鼬加入不同的模式?

Posted

技术标签:

【中文标题】如何使用猫鼬加入不同的模式?【英文标题】:How to join to different schema using mongoose? 【发布时间】:2021-09-11 14:14:18 【问题描述】:

我有 2 个名为“classSchema”和“sectionSchema”的架构,如下所示:

let classSchema = new mongoose.Schema(
  className: 
    type: String,
    required: true,
  ,
  capacity: 
      type: Number
  
);

let sectionSchema = new mongoose.Schema(
  sectionName: 
    type: String,
    required: true,
  ,
  strength: 
    type: Number,
    required: true,
  ,
  ofClass: 
      type: Mongoose.Schema.type.ObjectId,
  
);

我想在使用 classSchema 时创建一个学生班级和该班级的一部分。例如:我想使用 classSchema 创建一个类“X”,然后使用 sectionSchema 向其添加部分,如“X-A”、“X-B”、“X-C”等。我想在创建部分时为该部分提供类创建的参考。我怎样才能实现这个功能?

【问题讨论】:

【参考方案1】:

看起来不像sectionSchema中的“ofClass”,你想要classSchema中引用的sectionSchema的ObjectId,并将它们存储在一个数组中。类似的,

let classSchema = new mongoose.Schema(
  className: 
    type: String,
    required: true,
  ,
  capacity: 
      type: Number
  ,
sections:[mongoose.Schema.Types.ObjectId]
);

然后你可以使用猫鼬populate、find或aggregation加入

【讨论】:

以上是关于如何使用猫鼬加入不同的模式?的主要内容,如果未能解决你的问题,请参考以下文章

构建猫鼬模式时如何引用不同集合中的特定字段?

构建猫鼬模式时如何引用不同集合中的特定字段?

如果用户角色(卖家与买家)有所不同,我该如何构建我的猫鼬模式?

如何使用猫鼬多次正确触发模式方法

如何使用对象数组创建猫鼬模式

如何在猫鼬模式中使用异步默认值?