Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 从数据库中查找成功和失败计数_Mongodb_Mongodb Query_Aggregation Framework - Fatal编程技术网

Mongodb 从数据库中查找成功和失败计数

Mongodb 从数据库中查找成功和失败计数,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,我的数据库条目如下所示 [ { _id : ObjectId("5839d639c7475e3gr32fcf86") email : abcd@gmail.com status : failed } { _id : ObjectId("5839d639df7475e3gr32fcf86") email : efgh@gmail.com status : success } ] 我想按电子邮件id分组,并创建一个包含三列的输出表:email、SuccessCount和failCount 我的代码

我的数据库条目如下所示

[
{
_id : ObjectId("5839d639c7475e3gr32fcf86")
email : abcd@gmail.com
status : failed
}
{
_id : ObjectId("5839d639df7475e3gr32fcf86")
email : efgh@gmail.com
status : success
}
]
我想按电子邮件id分组,并创建一个包含三列的输出表:email、SuccessCount和failCount

我的代码当前看起来是这样的(不工作


我正在尝试将
“status”:success
添加到successCount中,同时添加$sum,但它们都不起作用。我哪里出了问题?提前感谢。

您可以尝试以下查询

db.mycol.aggregate({
    $project: {
        email: '$email',
        success: {
            $cond: { if: { $eq: ['$status', 'success'] }, then: 1, else : 0 }
        },
        failed: {
            $cond: { if: { $eq: ['$status', 'failed'] }, then: 1, else : 0 }
        }
    }
}, {
    $group: { _id: '$email', success: { $sum: '$success' }, failed: { $sum: '$failed' }
    }
})

您可以尝试以下查询

db.mycol.aggregate({
    $project: {
        email: '$email',
        success: {
            $cond: { if: { $eq: ['$status', 'success'] }, then: 1, else : 0 }
        },
        failed: {
            $cond: { if: { $eq: ['$status', 'failed'] }, then: 1, else : 0 }
        }
    }
}, {
    $group: { _id: '$email', success: { $sum: '$success' }, failed: { $sum: '$failed' }
    }
})

你们也可以在小组赛阶段做同样的事情

 db.mycol.aggregate({
        $group: {
            _id: '$email',
            sucessCount:{$sum:{$cond:[{$eq:["$status","success"]},1,0]}},
            failCount:{$sum:{$cond:[{$eq:["$status","failed"]},1,0]}}
        }
    })

你们也可以在小组赛阶段做同样的事情

 db.mycol.aggregate({
        $group: {
            _id: '$email',
            sucessCount:{$sum:{$cond:[{$eq:["$status","success"]},1,0]}},
            failCount:{$sum:{$cond:[{$eq:["$status","failed"]},1,0]}}
        }
    })

共享适当的文档结构。您共享的内容无效。它是一个单文档、多文档、数组吗?共享适当的文档结构。您共享的内容无效。是单个文档、多个文档、数组吗?所有电子邮件地址的成功和失败计数均显示为0。您确定状态字段仅包含“成功”和“失败”值吗?是的,我检查了两次。无法找出我在这里缺少了什么。db.mycol.aggregate({$group:{{u id:{email:'$email',status:$status},count:{$sum:1}}},{$group:{{u id::$u id.email],counts:{$push:{status:${u id.status',count:$count}})你能检查一下吗?它在搜索了很长时间后超时。所有电子邮件地址的成功和失败计数都显示为0。你确定状态字段只包含“成功”和“失败”值吗?是的,我检查了两次。无法找出我在这里缺少了什么。db.mycol.aggregate({$group:{{u id:{email:'$email',status:$status},count:{$sum:1}}},{$group:{{u id::$u id.email],counts:{$push:{status:${u id.status',count:$count}})你能检查一下吗?它在搜索了很长时间后超时了。