如何使用 mongodb 拼合顶部文档和子文档?



我正在处理mongoDB查询。

假设我正在处理学校数据,如下所示,其中每个级别都有一个唯一的标识符。为了这个例子,让我们假设我们有一个参加每个教室的姓氏列表:

School1
Division1
Classroom1
Student1 last name
Student2 last name
Classroom2
Student3 last name
Student4 last name
Divison2
Classroom1
-
Classroom2
-
School2
-
-
-
-
-

我现在想写一个查询,通过它我以这种格式获取所有学生的所有"扁平化"信息:

{
School1,
Division1,
Classroom1,
Student1 last name,
},
{
School1,
Division1,
Classroom1,
Student2 last name,
},
{
School1,
Division1,
Classroom2,
Student3 last name,
},
......

这是我到目前为止所拥有的:

db.students.aggregate(
[
{
$project: {
school: "$school._id",
division: "$school.division._id", 
classroom: "$school.division.classroom._id",
student: "$school.division.classroom.student._id",
}
},
{$unwind:"$school"},
{$unwind:"$division"},
{$unwind:"$classroom"},
{$unwind:"$student"},
]
)

有了这个,我得到了我需要的信息,但不是所需的格式:

school: school1,
division: { division1},
classroom: {classroom1, classroom2},
student: {student1, student2, student3, student4}

对此有什么好方法?

$unwind之后进行投影:

db.students.aggregate(
[
{$match: {}},
{$unwind:"$school"},
{$unwind:"$division"},
{$unwind:"$classroom"},
{$unwind:"$student"},
{
$project: {
school: "$school._id",
division: "$division._id", 
classroom: "$classroom._id",
student: "$student._id",
}
},
]
)

最新更新