我是mongoDB的新手。
我们必须显示输出数据
按日期划分的唯一用户数。
- 醇>
Android用户和Ios用户数。
这是输入JSON数据
输入
[{
'name' : 'user1',
'date' : '23/09/2017',
'deviceType' : 'Android'
},
{
'name' : 'user2',
'date' : '24/09/2017',
'deviceType' :'ios'
},
{
'name' : 'user1',
'date' : '23/09/2017',
'deviceType' :'ios'
},
{
'name' : 'user2',
'date' : '23/09/2017',
'deviceType' :'ios'
},
{
'name' : 'user1',
'date' : '24/09/2017',
'deviceType' :'ios'
},
{
'name' : 'user2',
'date' : '25/09/2017',
'deviceType' :'Android'
}
]
我很困惑什么是查询以获取所需数据。
输出
输出
[{
'date' : '23/09/2017',
'iosCount': 2,
'androidCount':1
},
{
'date' : '24/09/2017',
'iosCount': 2,
'androidCount':0
},
{
'date' : '25/09/2017',
'iosCount': 0,
'androidCount':1
}
]
答案 0 :(得分:1)
这是一个解决方案,它对设备类型保持中立。如果添加更多,则agg管道将适应新值。
db.foo.aggregate([
{$group: {_id: "$date",
iosCount: {$sum: {$cond: [ {$eq: [ "$deviceType","ios"]}, 1, 0 ] }},
androidCount: {$sum: {$cond: [ {$eq: ["$deviceType","Android"]}, 1, 0] }}
}}
]);
如果你真的想要你想要的输出:
leap-day
答案 1 :(得分:1)
@ Buzz Moschetti
如果日期" 23/09 / 2017"有输入数据,如
[{'date' : 23/09/2017, totalIos : 2, totalAndroid: 1}]
输出
{{1}}
user1拥有数据2个android和1个Ios数据。所以只有1个Android数据会被计算在内。