mongodb查询平级数据,返回树形结构
#mongodb查询数据,只返回一级、二级树形结构,子级数据对象整个返回 db.t_ythgk_zd.aggregate([ // 1. 匹配指定的 dmlx { $match: { sjdm: "YTHGK_DIC_00002" ,yxx:1 } }, // 2. 查找上级代码 (sjdm) 对应的文档,并构建一个子文档数组 { $lookup: { from: "t_ythgk_zd", localField: "dm", foreignField: "sjdm", as: "children" } }, // 3. 只包含需要的字段 { $project: { dmmc: 1, children: { $filter: { input: "$children", as: "child", cond: { $eq: ["$$child.dmlx", "DM_ZDRYXL"] } } } } } ]).forEach(doc => { printjson(doc); }); #mongodb查询数据,只返回一级、二级树形结构,子级数据对象字段指定返回 db.t_ythgk_zd.aggregate([ // 1. 匹配指定的 dmlx { $match: { sjdm: "YTHGK_DIC_00002", yxx: 1 } }, // 2. 查找上级代码 (sjdm) 对应的文档,并构建一个子文档数组 { $lookup: { from: "t_ythgk_zd", localField: "dm", foreignField: "sjdm", as: "children" } }, // 3. 只包含需要的字段 { $project: { dmmc: 1, children: { $map: { input: { $filter: { input: "$children", as: "child", cond: { $eq: ["$$child.dmlx", "DM_ZDRYXL"] } } }, as: "child", in: { dmmc: "$$child.dmmc" } } } } } ]).forEach(doc => { printjson(doc); }); #mongodb查询数据,迭代返回树形结构 // 从 MongoDB 中查询数据 var data = db.t_ythgk_zd.aggregate([ { $match: { dmlx: "DM_ZDRYXL",sjdm:{$ne:"0"} } }, { $lookup: { from: "t_ythgk_zd", localField: "dm", foreignField: "sjdm", as: "children" } } ]).toArray(); // 递归函数构建树形结构 function buildTree(nodes, parentId = "YTHGK_DIC_00002") { return nodes .filter(node => node.sjdm === parentId) .map(node => ({ dmmc: node.dmmc, children: buildTree(nodes, node.dm) })); } // 构建树形结构 var tree = buildTree(data); // 打印结果 printjson(tree);