【发布时间】:2021-11-10 00:23:43
【问题描述】:
我有以下示例文档:(parent_id: null 表示文件/文件夹位于根目录)
{"_id":"a", "name":"Pictures", "parent_id": null, "type": "folder"}
{"_id":"d", "name":"Paris", "parent_id":"b", "type": "folder"}
{"_id":"c", "name":"New Folder", "parent_id": null, "type": "folder"}
{"_id":"b", "name":"Vacation 2020", "parent_id":"a", "type": "folder"}
{"_id":"e", "name":"Videos", "parent_id": null, "type": "folder"}
{"_id":"f", "name": "Paris", "parent_id": null, "type": "folder"}
我有一个包含值的数组:(与Pictures/Vacation 2020/Paris 或Pictures > Vacation 2020 > Paris 作为路径基本相同)
["Pictures", "Vacation 2020", "Paris"]
我想看看最终结果:
{"_id":"a", "name":"Pictures", "parent_id": null, "type": "folder"}
{"_id":"b", "name":"Vacation 2020", "parent_id":"a", "type": "folder"}
{"_id":"d", "name":"Paris", "parent_id":"b", "type": "folder"}
有没有办法,也许是在聚合状态,它首先搜索
// First Folder
"name": "Pictures"
"parent_id": null
返回给{"_id":"a", "name":"Pictures", "parent_id": null, "type": "folder"}
然后它会搜索下一个子文件夹:
// Second Folder
"name": "Vacation 2020"
"parent_id": "a"
这将导致返回到{"_id":"b", "name":"Vacation 2020", "parent_id":"a", "type": "folder"}。然后使用以下最终命令:
// Third Folder
"name": "Paris"
"parent_id": "b"
然后将所有找到的文档(从最终结果)返回给我?
我正在考虑将 for 循环与 findOne 一起使用,但它听起来不像使用聚合函数那样有效。
有人有想法吗?那很好啊!谢谢!
DarkLordCoder
附:每个文件夹在相同的 parent_id 上都有唯一的名称。因此,您可以拥有 2 个名为“Paris”的文件夹,但它具有不同的 parent_id(因为它们位于不同的文件夹中)。
【问题讨论】:
标签: node.js json mongodb aggregate