匹配
如何编写查询以使所有平均年龄低于或等于 70000 美元的部门超过或等于 35?
为此,我们需要编写一个查询来匹配薪水小于或等于$ 70000 的员工。然后添加聚合阶段以按部门对员工进行分组。然后添加一个带有名为 average_age 的字段的累加器,使用$ avg 累加器查找每个部门的平均年龄,并在现有$ match 和$ group 聚合下面添加另一个$ match 聚合,这样我们只检索 average_age 为结果的结果大于或等于 35。
db.employees.aggregate([
{"$match": {"salary": {"$lte": 70000}}},
{"$group": {"_id": "$dept",
"average_age": {"$avg": "$age"}
}
},
{"$match": {"average_age": {"$gte": 35}}}
])
结果是:
{
"_id": "IT",
"average_age": 31
}
{
"_id": "Customer Service",
"average_age": 34.5
}
{
"_id": "Finance",
"average_age": 32.5
}