匹配

如何编写查询以使所有平均年龄低于或等于 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
}