zoukankan      html  css  js  c++  java
  • mongo 分组 aggregation

    公司私用mongodb做后台存储,可能是图它的无结构,速度快,不过在我实际使用中,速度和mysql相比确实会快点
    不过需要分组聚合等查询的时候稍显麻烦,相比mysql而言,最近要做这方面的操作,就调研了下。

    sql和mongo聚合查询关键字对应

    sql 关键字 mongo aggregation关键字
    where $match
    group by $group
    having $match
    select … $project
    order by $sort
    limit $limit
    sum $sum
    count $sum
    join $lookup
    avg $avg
    min $min
    max $max

    文档结构如下:
    查 收到礼物(幸运魔方)数量最多的前五名主播在这里插入图片描述
    sql语句编写应该这样:

    SELECT
    	receiveUid,
    	receiveUname,
    	sum( number ) number 
    FROM
    	giftRecord 
    WHERE
    	giftName = '幸运魔方' 
    GROUP BY
    	receiveUid,
    	receiveUname 
    ORDER BY
    	number DESC 
    	LIMIT 5
    

    mongo 聚合操作如下:
    在这里插入图片描述
    需要注意分组里面_id字段是必须有 是分组字段,我这里根据收礼人id分组 所以是receiveUid,另外receiveUname也需要查询,因为要查出来

    如果使用spring-data-mongo操作就会更加清晰
    在这里插入图片描述

    更多mongo aggregation操作参见官方文档
    https://docs.mongodb.com/manual/reference/operator/aggregation-pipeline/

  • 相关阅读:
    android 学习笔记1- 应用程序的资源管理
    idea shortcut
    关于layou以及layout 上的控件
    java 之深拷贝与浅拷贝
    Java中static静态方法可以继承吗?可以被重写吗?
    String StringBuff StringBuilder 使用。
    linux 中断
    设备类class理解
    linux 内核符号
    QT 调试输出格式
  • 原文地址:https://www.cnblogs.com/paper-man/p/13284596.html
Copyright © 2011-2022 走看看