按Mongodb中字段的平均值计算文档数
我们的学生在4个领域的分数建模如下:按Mongodb中字段的平均值计算文档数,mongodb,aggregation-framework,average,Mongodb,Aggregation Framework,Average,我们的学生在4个领域的分数建模如下: { "_id" : xxx, "student" : "Private Ryan", "math" : 9, "history" : 8, "literature" : 6, "science" : 10 } 任务是计算有多少学生表现良好/一般/不好。鉴于: 好:平均得分>=8分 不好:平均分数
{
"_id" : xxx,
"student" : "Private Ryan",
"math" : 9,
"history" : 8,
"literature" : 6,
"science" : 10
}
任务是计算有多少学生表现良好/一般/不好。鉴于:
- 好:平均得分>=8分
- 不好:平均分数<5
db.collection.aggregate([
{
$addFields: {
label: {
$let: {
vars: {
avg: {
$divide: [ { $sum: [ "$math", "$history", "$literature", "$science" ] }, 4 ]
}
},
in: {
$cond: [
{ $gte: [ "$$avg", 8 ] },
"good",
{ $cond: [ { $lt: [ "$$avg", 5 ] }, "bad", "average" ] }
]
}
}
}
}
},
{
$group: {
_id: "$label",
count: { $sum: 1 },
students: { $push: "$$ROOT" }
}
}
])
您能否至少用一些示例文档和预期的输出示例来展示您的尝试?这是每个学生所有科目的平均值还是每个科目的平均值?解释很清楚,结果正是我想要的(但不知道如何实现)。它在我的devdb上也非常快,但我想它也可以接受大约1000万个文档的速度