Mongoose 填充子文档数组

Posted

技术标签:

【中文标题】Mongoose 填充子文档数组【英文标题】:Mongoose populating array of subdocuments 【发布时间】:2017-03-21 03:06:45 【问题描述】:

抱歉,如果这已经被问到,我的搜索没有出现同样的情况。我有两个类似于以下的模式:

var experimentSchema = new mongoose.Schema(

    name  : 'string'
    elements :  [
        type : mongoose.Schema.ObjectId, 
        ref: 'Element'
    ],
    resources : [
        type : mongoose.Schema.ObjectId,
        ref  : 'Resource'
    ],

)


var elementSchema = new mongoose.Schema(
    name : 'string',
    component : 
        type : mongoose.Schema.ObjectId,
        ref  : 'Component'
    
)

我想进行深度填充,这样当我请求实验时,我会得到一个包含 elementsresources 数组的对象,并且对于每个元素,字段 component 也已填充。

我尝试了一些类似的方法:

Experiment.findOne(query).populate(['resources','elements','elements.component']).exec(...)

没有成功。任何人都可以为这种类型的操作提供正确的语法吗?

提前致谢!

【问题讨论】:

【参考方案1】:

希望这会有所帮助。

models.User.findOne(query)
      .populate([
        path: 'elements',
        populate:  
             path:  'components', 
             model: 'Component'
            
      ,
        path:'resources'
      ])
      .exec(...)

【讨论】:

以上是关于Mongoose 填充子文档数组的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose - 无法在路径 notification.from 上使用排序填充,因为它是文档数组的子属性

Mongoose 填充子子文档

创建后如何在 mongoose 中填充子文档?

Mongoose 从另一个子文档填充子文档,其中两个子文档都是主文档的一部分

构建我的猫鼬模式的最佳方式:嵌入式数组、填充、子文档?

MongoDB Mongoose 聚合查询深度嵌套数组删除空结果并填充引用