【发布时间】:2020-02-12 14:07:09
【问题描述】:
数据结构的简化示例是
{ _id: ObjectId, parentId: ObjectId }
其中父级的parentId 为空白,所有子级的parentId 指向同一集合中的顶级记录。
我有一个 ID 数组,可以是父 或 子 ID,我需要检索所有父记录。
因此,如果 ID 是针对父母的,那就凉快吧。
如果给定 ID 指向具有parentId 的记录,则检索具有_id === parentId 的记录。
最后,我不能有重复项,所以如果我有一个子 ID 指向我已经拥有的父记录(因为我明确地获得了 ID),只需获取唯一的父记录。
所以我可以有这样的查询:
query: { _id: {$in: [2,3,4]}}
像
这样的数据_id | parentId
1 | undefined
2 | 1
3 | undefined
4 | 3
应该返回1, 3 的记录,因为2 指向1,虽然我有3 和4,但顶层是3。
【问题讨论】:
-
有什么理由不能简单地搜索所有未定义 parentId 的记录?这样的查询不会返回所有父记录吗?
标签: mongodb linked-list aggregate aggregate-functions