可利用MongoDB的聚合($graphLookup)特性:
https://docs.mongodb.com/manual/reference/operator/aggregation/graphLookup/
db.sites.aggregate([ //在sites这个表建立多个查询 { //第一步,在该表中匹配,找到起始行 $match: { //使用$match方法进行精准匹配 name: 'NanShan' //我们查询南山区,找到南山区所在的行 } }, { //第二步,在上一步结果的基础上继续查询 $graphLookup: { //使用$graphLookup方法进行聚合查询 from: "sites", //查询哪个表,因为数据都在sites表所以一样 connectFromField: "parent", //从哪个字段开始递归 startWith: "$parent", //起始字段的数值,这里动态引用该行$parent的值 connectToField: "name", //起始字段和其它行哪个字段一致,这里和name一样 as: "result" //输出结果集名称 } } ])
看不懂的话研究一下这个示例:
https://stackoverflow.com/questions/42787293/mongodb-recursive-query
还是搞不明白的话我建议就别用了……