group和project联合使用 --- 2023-04-23
2023-04-22 本文已影响0人
一位先生_
如果你想查用户表中的用户id,昵称,性别,年龄,手机号,每个年龄的数量大小
类似于:select id,nickname,gender,age,mobile,count(age) as sumAges from users;
- 使用mongo的话 你可以先使用find查询出所需要的非count信息
- 然后使用aggregate聚合查询出每个年龄的个数(这里以age进行分组)
- 组装匹配数据
group和project联合使用,分组查询后,返回想要的数据元素
last
db.customized_excel_3rd.aggregate([
{
'$group': {
'_id':{'platform':'$platform'},
'platform':{"$first":'$platform'},
'pm_user_id':{"$first":'$pm_user_id'},
'level':{"$first":'$level'},
'account_id':{"$first":'$account_id'},
'sum':{'$sum':'$level'}
}
},
{
'$project': {"sum":1, "platform": 1, "pm_user_id":1, "level":1, "account_id":1, "_id":0}
}
]);
- group中的会都返回
- $project写的话 里面元素的值不能为0 只能为1
- 如果不想显示的元素 那就在group中直接不写就可以了
db.post.aggregate([
{ "$match": { "rating": "important" } },
{ "$sort": { "date": -1 } },
{ "$limit": 20 },
{ "$lookup": {
"localField": "user_id",
"from": "user",
"foreignField": "_id",
"as": "userinfo"
} },
{ "$unwind": "$userinfo" },
{ "$project": {
"text": 1,
"date": 1,
"userinfo.name": 1,
"userinfo.country": 1
} }
]);