mongodb - MongoDB 查询优化 - 回顾
问题描述
再会 !
我有以下集合
[
{
"packageName": "pack1",
"className": "class1",
"status": "passed"
},
{
"packageName": "pack1",
"className": "class1",
"status": "ignored"
},
{
"packageName": "pack1",
"className": "class2",
"status": "failed"
},
{
"packageName": "pack2",
"className": "class1",
"status": "passed"
},
{
"packageName": "pack2",
"className": "class1",
"status": "passed"
},
]
为了按包分组,然后计算通过/失败/忽略计数并计算类计数,我创建了以下查询
db.collection.aggregate([
{
"$group": {
"_id": "$packageName",
"classes": {
"$addToSet": "$className"
},
"passCount": {
"$sum": {
"$cond": [
{
"$eq": [
"$status",
"passed"
]
},
1,
0
]
}
},
"failCount": {
"$sum": {
"$cond": [
{
"$eq": [
"$status",
"failed"
]
},
1,
0
]
}
},
"ignoredCount": {
"$sum": {
"$cond": [
{
"$eq": [
"$status",
"ignored"
]
},
1,
0
]
}
},
}
},
{
"$project": {
"packageName": "$_id",
"classCount": {
"$size": "$classes"
},
"passCount": 1,
"failCount": 1,
"ignoredCount": 1
}
}
])
得到以下输出
[
{
"_id": "pack1",
"classCount": 2,
"failCount": 1,
"ignoredCount": 1,
"packageName": "pack1",
"passCount": 1
},
{
"_id": "pack2",
"classCount": 1,
"failCount": 0,
"ignoredCount": 0,
"packageName": "pack2",
"passCount": 2
}
]
作为 MongoDB 的初学者,我不确定它是否经过优化。我一直在阅读文档,这就是我想出的。如果您能帮助我优化此查询并提供您的评论,我们将不胜感激。
谢谢你的时间 !
解决方案
推荐阅读
- c# - Listview 删除特定文件名
- amazon-web-services - 如何重命名粘合作业输出文件名?
- django - 如何将令牌身份验证添加到标头
- laravel - Laravel 5 - 使用登录表单(用户)和 API 请求(学生)进行身份验证
- python - 创建基于其他列python的排名显示值的新列
- javascript - 基于随机索引在javascript中的不同将值存储到两个不同的数组
- spring - Spring AOP:扩展类时的@within 行为
- python - 在anaconda环境中安装本地包
- database - 显式连接与隐式连接?
- wordpress - Wordpress如何添加主题安装