MongoDB 聚合计数



我有这个结构

{
    "_id" : ObjectId( "42342342hj234h2j4h23j4h32j" ),
    "email" : "some@email.com",
    "points" : "5"
}

我有大约 100k+ 文档。

我怎么能得出这个结果:

{
    "frequency"   : 5
    "email_count" : 100
}
{
    "frequency"   : 4
    "email_count" : 24
}
{
    "frequency"   : 3
    "email_count" : 32
}
其中频率描述电子邮件在

集中出现的次数,电子邮件计数描述有多少封电子邮件具有该特定频率(例如,some@email.com 在数据集中出现 5 倍,因此 some1@email.com 其中频率 = 5,email_count = 2)

谢谢

您可以使用

.aggregate()和使用"双精度" $group阶段来实现这种结果:

db.collection.aggregate([
    { "$group": {
        "_id": "$email",
        "frequency": { "$sum": 1 }
    }},
    { "$group": {
        "_id": "$frequency",
        "count": { "$sum": 1 }
    }}
])

因此,当您仔细考虑这一点时,第一阶段是"计算"集合中相同"电子邮件"地址的出现次数,这就是"频率"。

第二阶段,然后"分组"这个"频率"值

的相同出现次数,并"计数"找到相同值的次数。

熟悉聚合概念和可用的运算符。这将是非常值得的。

相关内容

  • 没有找到相关文章

最新更新