这是输入JSON数据,存储在mongoDB中,如此
输入
[{
'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
}
]
我使用聚合函数来执行任务。 假设集合名称是用户那么。
db.users.aggregate([{'$group':{
'_id':{'date':'$date','name':'$name'},
'count':{'$sum' :1}
}
}])
此聚合函数的输出不会返回适当的结果。
让我们解释一下我感兴趣的日期只有23/08/2017有多少用户和他们使用的设备类型ios或android不计算设备。让我们说像
这样的例子如果日期" 23/09 / 2017"有输入数据,如
[{'名称' :' user1',' date' :' 23/09 / 2017',' deviceType' :' Android'},
{'名称' :' user1',' date' :' 23/09 / 2017',' deviceType' :' IOS'},
{'名称' :' user1',' date' :' 23/09 / 2017',' deviceType' :' Android'},
{'名称' :' user2',' date':' 23/09 / 2017',' deviceType':' ios'} ]
输出
[{'日期' :2017年9月23日,总数:2,总安德烈:1}]
答案 0 :(得分:0)
$sum
要求你告诉它要总结什么。这是你期望输出的结果:
db.users.aggregate([{'$group': {'_id': {'date':'$date','name':'$name'}, 'count': {'$sum': 1}}}])
{ "_id" : { "date" : "24/09/2017", "name" : "user1" }, "count" : 1 }
{ "_id" : { "date" : "23/09/2017", "name" : "user2" }, "count" : 1 }
{ "_id" : { "date" : "24/09/2017", "name" : "user2" }, "count" : 1 }
{ "_id" : { "date" : "25/09/2017", "name" : "user2" }, "count" : 1 }
{ "_id" : { "date" : "23/09/2017", "name" : "user1" }, "count" : 2 }