php7中使用mongodb的aggregate进行聚合操作(sum求和,avg等)
关键词: 发布时间:2018-08-13 00:23:56 浏览次数:765

之前写的php操作mongodb类中没有实现聚合操作,研究了好久,在命令行下可以正常,但是用php写的结果与命令行不一样,折腾了好久,发现是写法错了,最后在php官网中找到解决办法,之前在网上看到的都是老的mongo操作方法,不是mongodb,看文档真的很重要:


7 aggregate使用,相当于shell里面的”|” 

上面的几乎全部可以用aggregate进行查询 

与sql对应关系


sql         mongodb


WHERE       $match  //match里面可以用and,or,以及逻辑判断,但是好像不能用where

GROUP BY    $group

HAVING      $match

SELECT      $project

ORDER BY    $sort

LIMIT       $limit

SUM()       $sum

COUNT()     $sum


blob.png

blob.png

> db.users.aggregate([{$group:{"_id":"$type","hr_count":{"$sum":1}}}]);
{ "_id" : "wn", "hr_count" : 1 }
{ "_id" : "bt", "hr_count" : 3 }
{ "_id" : "ns", "hr_count" : 3 }
{ "_id" : null, "hr_count" : 6 }
>


Php官方文档示例:

http://www.php.net/manual/zh/mongodb-driver-manager.executecommand.php

mongodb官方关于pipeline的说明:

https://docs.mongodb.com/manual/core/aggregation-pipeline/


php使用aggregate操作mongodb进行求和示例:之前一直没写pipeline,把group放到上一层去了,所以一直无法分组,坑。。。

<?php
/**
 * Created by PhpStorm.
 * User: www.hu-rong.com
 * Date: 2018/8/12
 * Time: 22:10
 */


$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");


$param = [
    'aggregate' => 'users',
    'pipeline' => [
        [
            '$match' => [
                'price' => ['$gte' => 3600]
            ]
        ],
        [
            '$group' => [
                '_id' => '$type',
                'hr_count' => [
                    '$sum' => 1
                ]
            ]
        ]

    ],

];
$cmd = new MongoDB\Driver\Command($param);
//print_r($cmd);
print_r($manager->executeCommand('linux_hurong', $cmd)->toArray());


结果:


Array    
(    
[0] => stdClass Object    
(    
[waitedMS] => 0    
[result] => Array    
(    
[0] => stdClass Object    
(    
[_id] => bt    
[hr_count] => 2    
)    
[1] => stdClass Object    
(    
[_id] => ns    
[hr_count] => 1    
)    
)    
[ok] => 1    
)    
)


赞:(41)
踩:(8)
相关文章
php7 mongodb distinct及count方法
php操作mongodb
mongodb学习网址及基础教程
mongodb数据库添加及删除
mongodb集合创建与删除
mongodb文档添加与更新
mongodb文档查询
php7 mongodb操作类
mongodb基础知识
windows10下安装mongodb
热门文章
win7中将文件拷贝到虚拟机linux下
php中用uploadify上传时session丢
laravel页面静态化的方法
centos7.4 64位下swoole安装及配置
centos7.4下php7.25多线程pthreads
微信扫一扫在哪
php-fpm经常卡死
单点登录sso原理及php实现方式及de
phpexcel设置行高及列宽,背景颜色,
一个简单的laravel分表联合查询
好评文章
php7中使用mongodb的aggregate进行
windows下使用MongoDB Compass Com
phpexcel设置行高及列宽,背景颜色,
laravel 中悲观锁 & 乐观锁的使用
laravel整合dingo/api方法步骤:jwt
在php中用curl请求java接口无法获
laravel页面静态化的方法
一个简单的laravel分表联合查询
laravel对具体的路由不采用csrfTok
php7 mongodb distinct及count方法
标签
rabbitmq mysql备份 elasticsearch
站点信息
建站时间:2011年
文章数:500篇
浏览数:253628
粤ICP备18028092号-1  微信:hurong241