我有一个数据集,看起来像这样:
我希望能够按照品牌ID对会话和用户名进行去重统计,示例SQL如下:
如果您熟悉SQL,那么期望的结果与我提到的SQL相同。
{"BrandId":"a","SessionId":100,"UserName":"tom"}
{"BrandId":"a","SessionId":200,"UserName":"tom"}
{"BrandId":"b","SessionId":300,"UserName":"mike"}
我希望能够按照品牌ID对会话和用户名进行去重统计,示例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相同。