Database 我想获取mongoDB中的分层数据及其引用?
我有一个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", "
{
"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()方法。这是你的情况吗?但我如何遍历我的模型?