Database 我想获取mongoDB中的分层数据及其引用?

Database 我想获取mongoDB中的分层数据及其引用?,database,mongodb,mongodb-query,aggregation-framework,nosql-aggregation,Database,Mongodb,Mongodb Query,Aggregation Framework,Nosql Aggregation,我有一个MongoDB集合部门作为以下格式的文档: { "department_id" : 1, "title" : "Department1", "departmentType_id" : 11 } { "department_id" : 2, "title" : "Department2", "

我有一个MongoDB集合部门作为以下格式的文档:

{
    "department_id" : 1, 
    "title" : "Department1",
    "departmentType_id" : 11
}
{
    "department_id" : 2, 
    "title" : "Department2",
    "departmentType_id" : 12
}
{
    "department_id" : 3, 
    "title" : "Department3",
    "departmentType_id" : 13
}
{
        "department_id" : 4, 
        "title" : "Department4",
        "departmentType_id" : 14
}
{
        "department_id" : 5, 
        "title" : "Department5",
        "departmentType_id" : 15
}
{
        "department_id" : 6, 
        "title" : "Department6",
        "departmentType_id" : 16
}
{
        "department_id" : 7, 
        "title" : "Department7",
        "departmentType_id" : 17
}
{
    "departmentDepartmentRelationshipId" : 100,
    "relationshipTitle" : "Department1 is parent of Department2",
    "department1_id" : 1,//reference of department with department_id: 1
    "department2_id" : 2,//reference of department with department_id: 2
    "rootParentDepartment_id" :1,//reference of department with department_id: 1
    "rootParentDepartment_id" : 1,//reference of department with department_id: 1
}
{
    "departmentDepartmentRelationshipId" : 200,
    "relationshipTitle" : "Department2 is parent of Department3",
    "department1_id" : 2,//reference of department with department_id: 2
    "department2_id" : 3,//reference of department with department_id: 3
    "rootParentDepartment_id" :1,//reference of department with department_id: 1
    "rootParentDepartment_id" : 1,//reference of department with department_id: 1
}
{
    "departmentDepartmentRelationshipId" : 210,
    "relationshipTitle" : "Department2 is parent of Department7",
    "department1_id" : 2,//reference of department with department_id: 2
    "department2_id" : 7,//reference of department with department_id: 7
    "rootParentDepartment_id" :1,//reference of department with department_id: 1
    "rootParentDepartment_id" : 1,//reference of department with department_id: 1
}
{
    "departmentDepartmentRelationshipId" : 300,
    "relationshipTitle" : "Department3 is parent of Department4",
    "department1_id" : 3,//reference of department with department_id: 3
    "department2_id" : 4,//reference of department with department_id: 4
    "rootParentDepartment_id" :1,//reference of department with department_id: 1
    "rootParentDepartment_id" : 1,//reference of department with department_id: 1
}
{
    "departmentDepartmentRelationshipId" : 400,
    "relationshipTitle" : "Department4 is parent of Department5",
    "department1_id" : 4,//reference of department with department_id: 4
    "department2_id" : 5,//reference of department with department_id: 5
    "rootParentDepartment_id" :1,//reference of department with department_id: 1
    "rootParentDepartment_id" : 1,//reference of department with department_id: 1
}
{
    "departmentDepartmentRelationshipId" : 500,
    "relationshipTitle" : "Department4 is parent of Department6",
    "department1_id" : 4,//reference of department with department_id: 4
    "department2_id" : 6,//reference of department with department_id: 6
    "rootParentDepartment_id" :1,//reference of department with department_id: 1
    "rootParentDepartment_id" : 1,//reference of department with department_id: 1
}
我有一个MongoDB集合departmentDepartmentRelationship作为以下格式的文档:

{
    "department_id" : 1, 
    "title" : "Department1",
    "departmentType_id" : 11
}
{
    "department_id" : 2, 
    "title" : "Department2",
    "departmentType_id" : 12
}
{
    "department_id" : 3, 
    "title" : "Department3",
    "departmentType_id" : 13
}
{
        "department_id" : 4, 
        "title" : "Department4",
        "departmentType_id" : 14
}
{
        "department_id" : 5, 
        "title" : "Department5",
        "departmentType_id" : 15
}
{
        "department_id" : 6, 
        "title" : "Department6",
        "departmentType_id" : 16
}
{
        "department_id" : 7, 
        "title" : "Department7",
        "departmentType_id" : 17
}
{
    "departmentDepartmentRelationshipId" : 100,
    "relationshipTitle" : "Department1 is parent of Department2",
    "department1_id" : 1,//reference of department with department_id: 1
    "department2_id" : 2,//reference of department with department_id: 2
    "rootParentDepartment_id" :1,//reference of department with department_id: 1
    "rootParentDepartment_id" : 1,//reference of department with department_id: 1
}
{
    "departmentDepartmentRelationshipId" : 200,
    "relationshipTitle" : "Department2 is parent of Department3",
    "department1_id" : 2,//reference of department with department_id: 2
    "department2_id" : 3,//reference of department with department_id: 3
    "rootParentDepartment_id" :1,//reference of department with department_id: 1
    "rootParentDepartment_id" : 1,//reference of department with department_id: 1
}
{
    "departmentDepartmentRelationshipId" : 210,
    "relationshipTitle" : "Department2 is parent of Department7",
    "department1_id" : 2,//reference of department with department_id: 2
    "department2_id" : 7,//reference of department with department_id: 7
    "rootParentDepartment_id" :1,//reference of department with department_id: 1
    "rootParentDepartment_id" : 1,//reference of department with department_id: 1
}
{
    "departmentDepartmentRelationshipId" : 300,
    "relationshipTitle" : "Department3 is parent of Department4",
    "department1_id" : 3,//reference of department with department_id: 3
    "department2_id" : 4,//reference of department with department_id: 4
    "rootParentDepartment_id" :1,//reference of department with department_id: 1
    "rootParentDepartment_id" : 1,//reference of department with department_id: 1
}
{
    "departmentDepartmentRelationshipId" : 400,
    "relationshipTitle" : "Department4 is parent of Department5",
    "department1_id" : 4,//reference of department with department_id: 4
    "department2_id" : 5,//reference of department with department_id: 5
    "rootParentDepartment_id" :1,//reference of department with department_id: 1
    "rootParentDepartment_id" : 1,//reference of department with department_id: 1
}
{
    "departmentDepartmentRelationshipId" : 500,
    "relationshipTitle" : "Department4 is parent of Department6",
    "department1_id" : 4,//reference of department with department_id: 4
    "department2_id" : 6,//reference of department with department_id: 6
    "rootParentDepartment_id" :1,//reference of department with department_id: 1
    "rootParentDepartment_id" : 1,//reference of department with department_id: 1
}
现在,我定义层次结构的模型是:

{
    "_id" : ObjectId("60af33d948d800a1315e96f6"),
    "departmentDepartmentRelationshipId" :100,
    "childs" : [ 
        {
            "departmentDepartmentRelationshipId" : 200,
            "childs" : [ //child could by more than one
                {
                    "departmentDepartmentRelationshipId" : 300,
                    "childs" : [//child could by more than one
                        {
                          "departmentDepartmentRelationshipId" : 400,
                               "childs" : []
                        }
                        {
                          "departmentDepartmentRelationshipId" : 500,
                               "childs" : []
                        }

                   ]
                },
               {
                      "departmentDepartmentRelationshipId" : 210,
                        "childs" : []
               }
            ]
        }
    ]
}
是否可以在单个查询中获取上述分层模型,而不是从departmentDepartmentRelationship集合中获取引用? 我的预期输出是::

{
        "_id" : ObjectId("60af33d948d800a1315e96f6"),
        {
        "departmentDepartmentRelationshipId" : 100,
        "relationshipTitle" : "Department1 is parent of Department2",
        "department1_id" : 1,//reference of department with department_id: 1
        "department2_id" : 2,//reference of department with department_id: 2
        "rootParentDepartment_id" :1,//reference of department with department_id: 1
        "rootParentDepartment_id" : 1,//reference of department with department_id: 1
    },
        "childs" : [ 
            {
                {
        "departmentDepartmentRelationshipId" : 200,
        "relationshipTitle" : "Department2 is parent of Department3",
        "department1_id" : 2,//reference of department with department_id: 2
        "department2_id" : 3,//reference of department with department_id: 3
        "rootParentDepartment_id" :1,//reference of department with department_id: 1
        "rootParentDepartment_id" : 1,//reference of department with department_id: 1
    },
                "childs" : [ //child could by more than one
                    {
                        {
        "departmentDepartmentRelationshipId" : 300,
        "relationshipTitle" : "Department3 is parent of Department4",
        "department1_id" : 3,//reference of department with department_id: 3
        "department2_id" : 4,//reference of department with department_id: 4
        "rootParentDepartment_id" :1,//reference of department with department_id: 1
        "rootParentDepartment_id" : 1,//reference of department with department_id: 1
    },
                        "childs" : [//child could by more than one
                            {
                               {
        "departmentDepartmentRelationshipId" : 400,
        "relationshipTitle" : "Department4 is parent of Department5",
        "department1_id" : 4,//reference of department with department_id: 4
        "department2_id" : 5,//reference of department with department_id: 5
        "rootParentDepartment_id" :1,//reference of department with department_id: 1
        "rootParentDepartment_id" : 1,//reference of department with department_id: 1
    },
                                   "childs" : []
                            }
                            {
                              {
        "departmentDepartmentRelationshipId" : 500,
        "relationshipTitle" : "Department4 is parent of Department6",
        "department1_id" : 4,//reference of department with department_id: 4
        "department2_id" : 6,//reference of department with department_id: 6
        "rootParentDepartment_id" :1,//reference of department with department_id: 1
        "rootParentDepartment_id" : 1,//reference of department with department_id: 1
    },
                                   "childs" : []
                            }

                       ]
                    },
                   {
                           {
        "departmentDepartmentRelationshipId" : 210,
        "relationshipTitle" : "Department2 is parent of Department7",
        "department1_id" : 2,//reference of department with department_id: 2
        "department2_id" : 7,//reference of department with department_id: 7
        "rootParentDepartment_id" :1,//reference of department with department_id: 1
        "rootParentDepartment_id" : 1,//reference of department with department_id: 1
    },
                            "childs" : []
                   }
                ]
            }
        ]
    }

我是mongoDB的绝对初学者,如果有人能帮助我,我将非常感谢。

如果您使用Mongoose来管理这个数据库(意味着您的项目是在Node中编写的),有一种非常简单的方法可以完成您想要的任务,那就是使用.populate()方法。这是你的情况吗?但我如何遍历我的模型?