php7中使用mongodb的aggregate进行聚合操作(sum求和,avg等)
首页->学习资料->微服务治理->mangodb 关键词: 发布时间:2018-08-12 16:23:56 浏览次数:7488

之前写的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    
)    
)


赞:(45)
踩:(9)
相关文章
php7 mongodb distinct及count方法
mongodb基础知识
mongodb报No suitable servers fou
php操作mongodb
mongodb学习网址及基础教程
mongodb数据库添加及删除
mongodb集合创建与删除
mongodb文档添加与更新
mongodb文档查询
php7 mongodb操作类
热门文章
win7中将文件拷贝到虚拟机linux下
phpexcel设置行高及列宽,背景颜色,
rabbitmq无法启动
intellij idea不显示git push按钮
php7中使用mongodb的aggregate进行
centos7.4 64位下swoole安装及配置
laravel页面静态化的方法
navicate连接mycat报1184错误
单点登录sso原理及php实现方式及de
devops-jenkins容器为pending状态
好评文章
phpexcel设置行高及列宽,背景颜色,
php7中使用mongodb的aggregate进行
intellij idea打开文件所在文件夹
windows下使用MongoDB Compass Com
win7中将文件拷贝到虚拟机linux下
laravel 中悲观锁 & 乐观锁的使用
单点登录sso原理及php实现方式及de
navicate连接mycat报1184错误
rabbitmq无法启动
laravel整合dingo/api方法步骤:jwt
标签
rabbitmq mysql备份 elasticsearch golang swoole
我的项目
【github】www.github.com/hurong241
【码云】gitee.com/hu_rong/projects
【docker hub】hub.docker.com/repositories/hurong241
【packagist】packagist.org/users/hurong241/packages
站点信息
建站时间:2011年
文章数:607篇
浏览数:941420
粤ICP备18028092号-1  微信:hurong241