【发布时间】:2015-03-01 15:23:45
【问题描述】:
我有一个类似这样的用户模型:
{
email: String,
name: String,
role: String,
location: {
country: String,
city: String
},
contacts: {
email: String,
phone: String
}
}
我的想法是在主页中显示以下信息:
- 每个用户都有详细信息。
- 每个国家/地区的用户数量。
- 该国家/地区的每个城市以及该城市的用户数量。
所以,在标题中我希望有一个国家/地区列表:
- 英国 (219)
- 德国 (128)
- 法国 (87)
- 意大利 (84)
- 等等……
每个国家/地区的城市列表:
- 伦敦 (119)
- 利物浦(76)
- 曼彻斯特 (3)
- 等等……
在正文中是用户列表...
我目前的查询适用于除城市以外的所有地方。
查询是:
User.aggregate([
{
$group: {
_id: { country: '$location.country' },
users: { $push: '$$ROOT' },
cities: { $addToSet: '$location.city' },
count: { $sum: 1 }
}
}
], function(err, results) {
console.log(results);
});
};
将$sum 包含在$addToSet 中会很好,但不幸的是它不起作用。
如何改进此代码?
【问题讨论】:
标签: javascript node.js mongodb mongoose