【发布时间】:2017-06-11 07:13:12
【问题描述】:
起初bucket 按年龄和boundaries 是[0,20,30,40,50,200]
db.user.aggregate(
{$project: {_id:0, age:{$subtract:[{$year:new Date()}, {$year:"$birthDay"}]} } },
{$bucket:{
groupBy:"$age",
boundaries:[0,20,30,40,50,200]
}},
{ $project:{ _id:0,age:"$_id",count:1 } }
)
得到以下结果
{ "count" : 5, "age" : 20 }
{ "count" : 1, "age" : 30 }
然后我想进一步统计每个城市的每个年龄范围
{ city : "SH", age: 20, count: 2 }
{ city : "BJ", age: 20, count: 3 }
{ city : "BJ", age: 30, count: 1 }
那么在这种情况下如何实现呢?
另外
db.user.aggregate(
{ $project: {_id:0, city:1, age:{$subtract:[{$year:new Date()}, {$year:"$birthDay"}]} } },
{ $group: { _id:"$city",ages:{$push:"$age"} } },
{ $project: {_id:0, city:"$_id",ages:1} }
)
{ "city" : "SH", "ages" : [ 26, 26 ] }
{ "city" : "BJ", "ages" : [ 27, 26, 26, 36 ] }
【问题讨论】:
-
源文档是什么样的?可以使用样本和您想要获得的结果的清晰图片。
标签: mongodb aggregation-framework