首页 > 解决方案 > 我如何在 mongodb 中使用它们的参考来获取分层数据?

问题描述

我有一个 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
}

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

{
    "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集合的departmentDepartmentRelationship JSON 对象?我的预期输出是::

{
        "_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 的绝对初学者,如果有人能帮助我,我将非常感激。

标签: javascriptjsonmongodbtreeaggregation-framework

解决方案


推荐阅读