【发布时间】:2015-05-06 19:40:32
【问题描述】:
我有一个数据集看起来像
{"BrandId":"a","SessionId":100,"UserName":"tom"}
{"BrandId":"a","SessionId":200,"UserName":"tom"}
{"BrandId":"b","SessionId":300,"UserName":"mike"}
我想按brandid计算不同的会话和用户名组,示例sql如下:
select brandid,count_distinct(sessionid),count_distinct(username)
from data
group by brandid
我尝试编写 Mongo DB,我当前的代码如下,但它不起作用。有没有办法让它工作?
db.logs.aggregate([
{$group:{
_id:{brand:"$BrandId",user:"$UserName",session:"$SessionId"},
count:{$sum:1}}},
{$group:{
_id:"$_id.brand",
users:{$sum:"$_id.user"},
sessions:{$sum:"$_id.session"}
}}
])
对于某个示例,预期计数为
{"BrandId:"a","countSession":2,"countUser":1}
{"BrandId:"b","countSession":1,"countUser":1}
如果你知道 SQL,预期结果和我提到的 SQL 一样。
【问题讨论】:
-
@JohnnyHK 没有。定义它不是问题。如果您知道如何计算多个字段,请告诉我。
-
预期/期望的输出是什么?
-
@chridam 我将预期的输出添加到问题中。请帮忙
标签: mongodb aggregation-framework