Mongoose populate sub-sub document

后端 未结 9 2147
深忆病人
深忆病人 2021-01-30 03:00

I have this setup in my MongoDB

Items:

title: String
comments: [] // of objectId\'s

Comments:

user: ObjectId()
item: Ob         


        
9条回答
  •  逝去的感伤
    2021-01-30 03:07

    To populate sub-sub document and populate from multiple schemas

    ProjectMetadata.findOne({id:req.params.prjId})
    .populate({
        path:'tasks',
        model:'task_metadata',
        populate:{
            path:'assigned_to',
            model:'users',
            select:'name employee_id -_id' // to select fields and remove _id field
    
        }
    })
    .populate({
        path:'client',
        model:'client'
    })
    .populate({
        path:'prjct_mgr',
        model:'users'
    })
    .populate({
        path:'acc_exec',
        model:'users'
    })
    .populate({
        path:'prj_type',
        model:'project_type'
    }).then ( // .. your thing
    

    or you can do it in following manner ..

       ProjectMetadata.findOne({id:req.params.prjId})
        .populate(
            [{
            path:'tasks',
            model:TaskMetadata,
            populate:[{
                path:'assigned_to',
                model:User,
                select:'name employee_id'
            },
            {
                path:'priority',
                model:Priority,
                select:'id title'
            }],
            select:"task_name id code assign_to stage priority_id"
        },
        {
            path:'client',
            model:Client,
            select:"client_name"
        },
        {
            path:'prjct_mgr',
            model:User,
            select:"name"
        },
        {
            path:'acc_exec',
            model:User,
            select:'name employee_id'
        },
        {
            path:'poc',
            model:User,
            select:'name employee_id'
        },
        {
            path:'prj_type',
            model:ProjectType,
            select:"type -_id"
        }
    
    ])
    

    I found the second method (of using array) more useful when I had to get multiple sub-sub documents of same parent.

提交回复
热议问题