mongodb - 在 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"}
]
所以我们需要找到具有最多严重错误的用户列表。
解决方案
有多种方法,例如使用$group
. 最简单的方法之一是
db.collection.aggregate([
{
$match: {
error: "critical"
}
},
{
$group: {
_id: "$user",
count: { $sum: 1 }
}
},
{ $sort: { "count": -1 } },
{ $limit: 1 }
])
工作Mongo游乐场
推荐阅读
- oracle - 为什么可插拔数据库用户成为管理员?
- php - 即使对 Apache 配置文件和 php.ini 进行了更改,HttpOnly 仍然设置为 false
- python - AWS Lambda 无法通过 AWS SES 发送电子邮件
- javascript - React + Jest:测试套件无法运行
- rust - 为什么 nomicon 布局章节 &Vec<&'static str> 不能用于预期 &Vec<&'a str> 的地方?
- android - 如何获取列表的对应值
来自 api 的颤动? - javascript - 测量单个进程的 NodeJS 内存使用情况
- java - Rails 6:使用 Channel Stream 更新 Html,用新文本替换文本
- c# - 如何使用 Azure Mgmt SDK fluent 获取端点统计信息和危险端点列表
- java - 编码英镑符号