#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);