mongodb 聚合查询 aggregate操作 group 分组统计

一、mongodb 的group 里面可以实现很多的操作
1.如下代码

$maxLogID=sysconf('maxLogID');
        $where['LogID'] = array('$gt' => (int)$maxLogID);
        $where['WinGold'] = array('$gt' => 0);
        $pipe = array(
            array(
                '$match' => $where
            ),
            array(
                '$group' => array(
                    '_id'    => '$UserID',
                    'maxWinGold'=>array(
                        '$max'=>'$WinGold'
                    ),
                    'maxLogID'=>array(
                        '$max'=>'$LogID'
                    ),
                    'todayWin'=>array(
                        '$sum'=>'$WinGold'
                    )
                ),
            )
        );
        $result = GameMongoDB::table('GameLog0')->aggregate($pipe);

2.解释
以上代码是php使用pipe的操作, m a x L o g I D 是 为 了 记 录 查 询 到 哪 里 了 , maxLogID是为了记录查询到哪里了, maxLogIDpipe里面 m a t c h 是 条 件 , 然 后 match是条件,然后 matchgroup里面_id后面对应的是要分组的字段,maxwinGold是自定义的字段,后面跟一个数组,键是操作的指令,value是对应的字段 m a x 是 指 根 据 这 个 U s e r I D 进 行 分 组 然 后 返 回 这 个 字 段 的 最 大 值 , max是指根据这个UserID进行分组然后返回这个字段的最大值, maxUserIDsum是求和
3.注意 mongodb是严格区分数据类型的,比如值是123 你用‘123’是查不出来的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值