美文网首页
group和project联合使用 --- 2023-04-23

group和project联合使用 --- 2023-04-23

作者: 一位先生_ | 来源:发表于2023-04-22 18:28 被阅读0次

    如果你想查用户表中的用户id,昵称,性别,年龄,手机号,每个年龄的数量大小
    类似于:select id,nickname,gender,age,mobile,count(age) as sumAges from users;

    1. 使用mongo的话 你可以先使用find查询出所需要的非count信息
    2. 然后使用aggregate聚合查询出每个年龄的个数(这里以age进行分组)
    3. 组装匹配数据

    group和project联合使用,分组查询后,返回想要的数据元素
    first 相当于group之后 order by 是 asc 如果你想desc的话 可以使用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}
        }
    ]);
    
    
    1. project 不写的话group中的会都返回
    2. $project写的话 里面元素的值不能为0 只能为1
    3. 如果不想显示的元素 那就在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
      } }
    ]);
    
    

    相关文章

      网友评论

          本文标题:group和project联合使用 --- 2023-04-23

          本文链接:https://www.haomeiwen.com/subject/jvnsjdtx.html