Mongodb monogdb中的$facet聚合

Mongodb monogdb中的$facet聚合,mongodb,aggregation-framework,Mongodb,Aggregation Framework,我的示例数据如下所示: Category response Privacy 1 Mobile 1 Privacy 1 Privacy 0 Phishing 1 Mobile 1 Desktop 1 Desktop 0 Security 1 我已经创建了一个对组所有类别的聚合查询,并获得如下计数: db.cmi5DashboardData.ag

我的示例数据如下所示:

Category      response
Privacy         1
Mobile          1
Privacy         1
Privacy         0
Phishing        1
Mobile          1
Desktop         1
Desktop         0
Security        1
我已经创建了一个对
所有
类别
的聚合查询,并获得如下计数:

db.cmi5DashboardData.aggregate([
{$group:{_id:'$category',knt:{$sum:'$response'}}},
{$sort:{knt:-1}},
{$project:{_id:0,category:'$_id',count:'$knt'}}
])
Category      count
Privacy         2
Mobile          2
Others          3
我得到如下输出:

Category      count
Privacy         2
Mobile          2
Phishing        1
Desktop         1
Security        1
但是,我需要将该数据分组到下一级,以获得如下输出:

db.cmi5DashboardData.aggregate([
{$group:{_id:'$category',knt:{$sum:'$response'}}},
{$sort:{knt:-1}},
{$project:{_id:0,category:'$_id',count:'$knt'}}
])
Category      count
Privacy         2
Mobile          2
Others          3
此处,前两个类别(具有较高的计数,即隐私和移动)被假定为强类别,其余所有类别被假定为弱点,并被称为其他类别<代码>其他应动态计算,这是除强数据点之外的所有其他数据点的相加。

在这方面有什么建议或建议会有帮助吗

注意:我使用的是mongodb 3.6

更新:JSON样本

{Category:'Phishing', response:1),
{Category:'Security', response:1),
{Category:'Privacy', response:1),
{Category:'Privacy', response:1),
{Category:'Privacy', response:0),
{Category:'Mobile', response:1),
{Category:'Mobile', response:1),
{Category:'Desktop', response:1),
{Category:'Desktop', response:0),

您应该尝试
$facet
聚合以获得所需的结果,该结果非常容易与
limit
skip一起使用

您可以检查输出


如果你把mongodb样本收集放在这里会更好我想你是在问JSON样本,如果是的话,我已经更新了问题。请查看问题中的更新部分以获取示例。