如何在猫鼬中填充另一个模型的子文档?

Posted

技术标签:

【中文标题】如何在猫鼬中填充另一个模型的子文档?【英文标题】:How to populate sub document of another model in mongoose? 【发布时间】:2021-04-24 12:45:01 【问题描述】:

我有两个 mongodb 模型如下。

const CompanySchema = new Schema(
     
    sections: [
      name:  type: String ,
      budgets: [ // indicates from CalcSchema
        index:  type: Number ,
        title:  type: String ,
        values: [Number],
        sum:  type: Number, default: 0 ,
      ],
    ]
  ,
   timestamps: true 
);

const CalcSchema = new Schema(
    budget: 
        type: Schema.Types.ObjectId, // I want to populate this field. this indicates budget document in Company model
        ref: "Company.sections.budgets" //it's possible in mongoose?
    ,
    expense: 
        type: Number,
        default: 0
    
);

budget 字段表示 CompanySchema 中的预算字段之一。 所以我想在获取 Calc 数据时进行填充。 但我不知道如何填充嵌入文档。

我尝试将参考值设置为ref: "Company.sections.budgets"。但它不起作用。

请任何人帮忙。

【问题讨论】:

请阅读此链接,我知道它对您有用并解决其他填充问题:dev.to/paras594/how-to-use-populate-in-mongoose-node-js-mo0 这能回答你的问题吗? How to populate nested entities in mongoose? @mohammadjavadahmadi 感谢您的评论。但这对我的情况没有帮助。我想填充其他模式的子文档。您的答案的情况是从一个模式中的子文档填充其他模式。情况不同。 【参考方案1】:

终于,我自己找到了答案。

有一个有用的插件。

https://github.com/QuantumGlitch/mongoose-sub-references-populate#readme

我了解到我的模式结构是错误的。这是 mongodb 中的反模式。

【讨论】:

以上是关于如何在猫鼬中填充另一个模型的子文档?的主要内容,如果未能解决你的问题,请参考以下文章

如何在猫鼬中找到最新的子文档

如何通过填充字段在猫鼬中查找文档?

如何通过填充字段在猫鼬中查找文档?

如何在猫鼬中异步填充嵌套对象?

如何在猫鼬中填充嵌套实体?

在猫鼬中填充+聚合[重复]