具有查找功能的 MongoDB 聚合
mongodb aggregate with find features
我有一个与此类似的模型:
{
email: String,
name: String,
role: String,
location: {
country: String,
city: String
},
contacts: {
email: String,
phone: String
}
}
我需要在我的视图中显示整个用户信息,但我还希望包括来自一个国家/地区的用户数量。
使用aggregate
我不知道如何让完整用户通过我创建的组。
所以目前我正在做的是这样的:
User.find({}, function(err, users) {
User.aggregate([
{ $group: { _id: { country: '$location.country' }, count: { $sum: 1 }}}
], function(err, results) {
res.render('home', {
users: users,
countries: results
});
});
});
如您所见,我正在使用查找,然后聚合以获取我需要的信息......但我很确定有一种方法可以只使用 aggregate
来获取它,但我找不到如何做到这一点......
如果需要累积每个组的整个用户信息,则需要使用 $push 运算符进行累积,使用 $$ROOT 系统变量访问整个用户信息。
User.aggregate([
{$group:{"_id":{"country":"$location.country"},
"users":{$push:"$$ROOT"},
"count":{$sum:1}}}
],callback)
如果您只想累积用户信息文档的特定字段,您可以推送必填字段,例如:
User.aggregate([
{$group:{"_id":{"country":"$location.country"},
"users":{$push:{"email":"$email","name":"$name"}},
"count":{$sum:1}}}
],callback)
相关文章:
- MongoDB聚合不返回具有相同值的对象
- MongoDB聚合将两个不同的字段合并为一个并获取计数
- 带有NodeJS驱动程序的MongoDB聚合游标
- 在 meteor 中使用 MongoDB 聚合时无法获得正确的结果
- 具有查找功能的 MongoDB 聚合
- SailsJS和MongoDB聚合框架在自定义查询方面存在麻烦
- 基于过去日期的Mongodb聚合
- mongoDB:聚合动态/多个字段
- MongoDB聚合-$project中的动态字段路径
- MongoDb聚合$match错误:"参数必须是聚合管道运算符“;
- 在带有$project的MongoDB聚合查询中包含一个Javascript变量
- MongoDB聚合:如何提取结果中的字段
- Mongodb聚合管道新增日期
- MongoDB聚合并匹配返回的键
- MongoDB聚合一般求和和按唯一键求和
- MongoDB聚合子文档上的每个键
- MongoDB聚合数组长度
- MongoDB聚合框架:在Project "key"中使用动态javascript变量字段
- MongoDB聚合总是返回0值
- 2小时Mongodb聚合