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

之前写的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进行
laravel页面静态化的方法
centos7.4 64位下swoole安装及配置
navicate连接mycat报1184错误
curl设置超时不起作用(CURLOPT_TIM
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年
文章数:623篇
浏览数:1300144
粤ICP备18028092号-1  微信:hurong241