首页 > 解决方案 > 在 mongoDB 中查询以找到最大错误的用户

问题描述

我有 JSON 格式的数据,我需要找到按排序顺序出现错误最多的用户列表。

[
{"timestamp":NumberLong(1605595701),"user":"sam","error":"critical"},
{"timestamp":NumberLong(1605595701),"user":"john","error":"warn"},
{"timestamp":NumberLong(1605595701),"user":"sam","error":"critical"},
{"timestamp":NumberLong(1605595701),"user":"samual","error":"warn"},
{"timestamp":NumberLong(1605595701),"user":"john","error":"critical"},
{"timestamp":NumberLong(1605595701),"user":"sam","error":"critical"},
{"timestamp":NumberLong(1605595701),"user":"sam","error":"critical"},
{"timestamp":NumberLong(1605595701),"user":"samual","error":"not critical"},
{"timestamp":NumberLong(1605595701),"user":"sam","error":"critical"},
{"timestamp":NumberLong(1605595701),"user":"sam","error":"critical"},
{"timestamp":NumberLong(1605595701),"user":"john","error":"critical"}
]

所以我们需要找到具有最多严重错误的用户列表。

标签: mongodb

解决方案


有多种方法,例如使用$group. 最简单的方法之一是

db.collection.aggregate([ 

  {
    $match: {
      error: "critical"
    }
  },
  {
    $group: {
      _id: "$user",
      count: { $sum: 1 }
    }
  },
  { $sort: { "count": -1 } },
  { $limit: 1 }
])

工作Mongo游乐场


推荐阅读