php7中使用mongodb的aggregate进行聚合操作(sum求和,avg等)
之前写的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
> 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
- 我的项目
- 【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