如何指定用于组聚合的关键函数



我想通过UserAgent聚合:

db.reports.aggregate(
    {
        $group: {
            _id: '$UserAgent',
            docsPerUserAgent: {
                $sum : 1
            }
        }
    }
)
上面的查询将考虑整个 UserAgent字符串。我想做的是计算那些包含Android(选项A), iPhone/iPad(选项B)和其余的(选项C)。我怎么能提供keyf函数到聚合框架(类似于这-如何通过指定一个函数来获取一个键组?但是在聚合框架的上下文中)?

目前还没有允许您做这样的事情:

db.col.aggregate([
    {$project: {userAgentType: {$extract: /(Android|iPhone/iPad)/}}},
    {$group: on_userAgentType}
]);

也许这个功能在JIRA中已经存在了,但是我不能立即找到它。

相反,更好的方法是将用户代理字符串的"有趣"部分分割成单独的字段,这样您就可以按userAgent.agentType(代表androidipadiphone)进行分组。不仅如此,您还可以使用它来事先生成$match,这意味着您可以在该字段上使用索引,从而使您的聚合性能更高。

相关内容

  • 没有找到相关文章

最新更新