MongoDB 是一个基于分布式文件存储的开源数据库系统,它使用的数据结构是 BSON(类似于 JSON)格式的文档。在 MongoDB 中,数组是一种常见的数据类型,可以嵌套在文档中。聚合操作是 MongoDB 中一种强大的数据处理方式,可以对集合中的文档进行各种复杂的转换和计算。
在 MongoDB 中,数组的聚合操作主要包括以下几种类型:
假设我们有一个包含学生信息的集合 students
,每个文档包含学生的姓名和成绩数组:
{
"_id": 1,
"name": "Alice",
"scores": [
{ "subject": "Math", "score": 90 },
{ "subject": "English", "score": 85 }
]
}
我们希望将每个学生的成绩数组转换为一个新的格式,例如:
{
"_id": 1,
"name": "Alice",
"grades": [
{ "subject": "Math", "grade": "A" },
{ "subject": "English", "grade": "B" }
]
}
我们可以使用 MongoDB 的聚合框架来实现这个需求。以下是一个示例代码:
db.students.aggregate([
{
$project: {
_id: 1,
name: 1,
grades: {
$map: {
input: "$scores",
as: "score",
in: {
subject: "$$score.subject",
grade: {
$cond: [
{ $gte: ["$$score.score", 90] }, "A",
{ $gte: ["$$score.score", 80] }, "B",
{ $gte: ["$$score.score", 70] }, "C",
"D"
]
}
}
}
}
}
}
])
通过上述示例代码,我们可以将 scores
数组转换为 grades
数组,并根据成绩计算出相应的等级。
领取专属 10元无门槛券
手把手带您无忧上云