匹配

如何編寫查詢以使所有平均年齡低於或等於 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
}