我有个类似这样的数据结构
{
"address":[
"北京",
"朝阳区",
"京旺家园"
],
....
}
现在我如果需要统计全北京的总数得怎么查呢?
db.cityLogs.aggregate([
{ '$unwind': '$address' }
, {
$group: { _id: "$address", count: { $sum: 1 } }
}
])
我这样查出来是按小区分组的。
1
raysmond 2019-07-05 14:25:32 +08:00
$unwind 可以将数组打平,不过好像是 MongoDB 3.2 以上才有的 feature
|
2
Vegetable 2019-07-05 14:47:37 +08:00
没明白,你想统计所有北京出现的次数?你的方法是可行的,中间需要插一步 match.
|
3
heanhsu 2019-07-05 17:08:10 +08:00
不知道是不是这个意思
db.cityLogs.aggregate([ { $unwind:'$address' }, { $group:{ _id: "$_id", city:{ $first:'$address' } } }, { $group:{ _id: '$city', count:{ $sum:1 } } } ]) |
4
heanhsu 2019-07-05 17:09:42 +08:00
不知道是不是这个意思
``` db.cityLogs.aggregate([ { $unwind:'$address' }, { $group:{ _id: "$_id", city:{ $first:'$address' } } }, { $group:{ _id: '$city', count:{ $sum:1 } } } ]) ``` |
5
moodasmood OP |