【发布时间】:2018-02-24 06:47:25
【问题描述】:
模拟示例。两个mongodb集合,departments和employees:
部门
{ _id: '101' }
{ _id: '102', parent: '101' }
{ _id: '103', parent: '101' }
{ _id: '104', parent: '103' }
员工
{ _id: '201', department: '101' }
{ _id: '202', department: '102' }
{ _id: '203', department: '102' }
{ _id: '204', department: '103' }
{ _id: '205', department: '104' }
如何查询一个部门或任何子部门中所有员工的列表(通过department.parent 引用属性)?
所以对于上面的例子,查询:
- 部门
101应该给员工文件201, 202, 203, 204, 205 - 部门
102应该给员工文件202, 203, 204, 205 - 部门
103应该给员工文件204, 205
如果无法对部门树中的“任意数量”级别进行查询,则提供“最多 N”级别结果的查询是完全可以接受的。
【问题讨论】:
-
用你当前的数据结构很难做到这一点(可行但效率不高)。我建议您将 children 字段添加到部门中以模拟树形结构。那会让你的生活变得更轻松。参考docs.mongodb.com/manual/tutorial/model-tree-structures
标签: mongodb aggregation-framework database-relations