php mongodb manager 查数据的各种姿势
一、连接 mongodb 数据库

以下操作默认都是以上面操作为前提(已连接成功)而做的操作
二、查的各种姿势
1)通过主键_id来查询,注意:_id不是直接用字符串来表示,要用 new \MongoDB\BSON\ObjectId 对象
// mysql: SELECT * FROM appDownloadRecord WHERE _id='5a2b9aaf96b4a97efbe31a91';
$id = new \MongoDB\BSON\ObjectId("5a2b9aaf96b4a97efbe31a91");
$filter = ['_id' => $id];
$options = [];
$query = new \MongoDB\Driver\Query($filter, $options);
$rows = $mongo->executeQuery('promotion-prod.appDownloadRecord', $query)->toArray();
echo '<pre>';print_r($rows);echo '</pre>';exit;
2)查询指定字段(其中_id默认是返回的,如果不想返回,要设置 _id=>0)
// mysql: SELECT `source`,`ip` FROM appDownloadRecord WHERE _id='5a2b9aaf96b4a97efbe31a91';
$id = new \MongoDB\BSON\ObjectId("5a2b9aaf96b4a97efbe31a91");
$filter = ['_id' => $id];
$options = [
'projection' => ['_id'=>0, 'source'=>1, 'ip'=>1]
];
$query = new \MongoDB\Driver\Query($filter, $options);
$rows = $mongo->executeQuery('promotion-prod.appDownloadRecord', $query)->toArray();
echo '<pre>';print_r($rows);echo '</pre>';exit;
3)普通条件查询
// mysql: SELECT * FROM appDownloadRecord WHERE source='bdsem1' LIMIT 10;
$filter = ['source' => 'bdsem1'];
$options = ['limit'=>10];
$query = new \MongoDB\Driver\Query($filter, $options);
$rows = $mongo->executeQuery('promotion-prod.appDownloadRecord', $query)->toArray();
echo '<pre>';print_r($rows);echo '</pre>';exit;
4)范围查询(between)
// mysql: SELECT * FROM appDownloadRecord WHERE (source='bdsem1') AND (createTime BEWTEEN '2017-12-21 00:00:00' AND '2017-12-28 00:00:00') LIMIT 10;
// mysql: SELECT * FROM appDownloadRecord WHERE (source='bdsem1') AND (createTime>='2017-12-21 00:00:00' AND createTime<'2017-12-28 00:00:00') LIMIT 10;
$startTime = new \MongoDB\BSON\UTCDateTime(strtotime('2017-12-21 00:00:00')*1000);
$endTime = new \MongoDB\BSON\UTCDateTime(strtotime('2017-12-28 00:00:00')*1000);
$filter = [
'source' => 'bdsem1',
'createTime' => [
'$gte' => $startTime,
'$lt' => $endTime,
],
];
$options = ['limit'=>10];
$query = new \MongoDB\Driver\Query($filter, $options);
$rows = $mongo->executeQuery('promotion-prod.appDownloadRecord', $query)->toArray();
echo '<pre>';print_r($rows);echo '</pre>';exit;
5)in 查询
// mysql: SELECT * FROM appDownloadRecord WHERE (source IN ('bdsem1', 'besem2', 'besem3')) LIMIT 10;
$filter = [
'source' => [
'$in' => ['bdsem1', 'bdsem2', 'bdsem3']
],
];
$options = ['limit'=>10];
$query = new \MongoDB\Driver\Query($filter, $options);
$rows = $mongo->executeQuery('promotion-prod.appDownloadRecord', $query)->toArray();
echo '<pre>';print_r($rows);echo '</pre>';exit;
6)or 操作
// mysql: SELECT * FROM appDownloadRecord WHERE source='bdsem1' AND (sys='ios' OR sys='other') LIMIT 10;
$filter = [
'source' => 'bdsem1',
'$or' => [
['sys'=>'ios'],
['sys'=>'other']
]
];
$options = ['limit'=>10];
$query = new \MongoDB\Driver\Query($filter, $options);
$rows = $mongo->executeQuery('promotion-prod.appDownloadRecord', $query)->toArray();
echo '<pre>';print_r($rows);echo '</pre>';exit;
7)group (聚合)操作
// mysql: SELECT sys,sum(*) as total FROM appDownloadRecord WHERE source='bdsem1' GROUP BY sys;
$document = [
'aggregate' => 'appDownloadRecord',
'pipeline' => [
[
'$match' => [
'source' => 'bdsem1'
]
],
[
'$group' => [
'_id' => '$sys',
'total' => ['$sum'=>1]
]
]
],
'allowDiskUse' => false,
];
$command = new \MongoDB\Driver\Command($document);
$rows = $mongo->executeCommand('promotion-prod', $command)->toArray();
echo '<pre>';print_r($rows);echo '</pre>';exit;
8)group having
// mysql: SELECT sys,sum(*) as total FROM appDownloadRecord WHERE source='bdsem1' GROUP BY sys HAVING total>1000;
$document = [
'aggregate' => 'appDownloadRecord',
'pipeline' => [
[
'$match' => [
'source' => 'bdsem1'
]
],
[
'$group' => [
'_id' => '$sys',
'total' => ['$sum'=>1]
]
],
[
'$match' => [
'total' => ['$gt'=>1000]
]
]
],
'allowDiskUse' => false,
];
$command = new \MongoDB\Driver\Command($document);
$rows = $mongo->executeCommand('promotion-prod', $command)->toArray();
echo '<pre>';print_r($rows);echo '</pre>';exit;
9)排序 sort
// mysql: SELECT * FROM appDownloadRecord WHERE source='bdsem1' ORDER BY createTime desc LIMIT 10;
$filter = ['source' => 'bdsem1'];
$options = [
'sort' => ['createTime'=>-1],
'limit' => 10
];
$query = new \MongoDB\Driver\Query($filter, $options);
$rows = $mongo->executeQuery('promotion-prod.appDownloadRecord', $query)->toArray();
echo '<pre>';print_r($rows);echo '</pre>';exit;
10)limit 分页
// mysql: SELECT * FROM appDownloadRecord WHERE source='bdsem1' LIMIT 10;
$filter = ['source' => 'bdsem1'];
$options = [
'limit' => 10
];
$query = new \MongoDB\Driver\Query($filter, $options);
$rows = $mongo->executeQuery('promotion-prod.appDownloadRecord', $query)->toArray();
echo '<pre>';print_r($rows);echo '</pre>';exit;
// mysql: SELECT * FROM appDownloadRecord WHERE source='bdsem1' LIMIT 10,10;
$filter = ['source' => 'bdsem1'];
$options = [
'skip' => 10,
'limit' => 10
];
$query = new \MongoDB\Driver\Query($filter, $options);
$rows = $mongo->executeQuery('promotion-prod.appDownloadRecord', $query)->toArray();
echo '<pre>';print_r($rows);echo '</pre>';exit;
完。
php mongodb manager 查数据的各种姿势的更多相关文章
- MongoDB系列----查
开启查询: db.getMongo().setSlaveOk() 查版本: db.servion(); db.serverBuildInfo(); db.serverStatus().storageE ...
- mongodb 增查改删
我们在 MongoDB 之 你得知道MongoDB是个什么鬼 MongoDB - 1 中学习了如果安装部署一个 MongoDB 如果没看到我的金玉良言的话,就重新打开一次客户端和服务端吧 本章我们 ...
- mongodb 物理删除数据
刚开始用mongodb的时候,感觉很好用,速度很快,不过后面就遇到一个问题,数据物理内存一直增加,删除表也不管用. 然后网上找了各种办法,最后发现一个办法管用,就是物理删除存储数据. 操作如下: 1. ...
- MongoDB如何存储数据
想要深入了解MongoDB如何存储数据之前,有一个概念必须清楚,那就是Memeory-Mapped Files. Memeory-Mapped Files 下图展示了数据库是如何跟底层系统打交道的. ...
- 直接查数据导出xls
直接查数据导出xls/usr/bin/mysql --default-character-set=utf8 -uroot -p"123456" -e"select * f ...
- 使用highcharts显示mongodb中的数据
1.mongodb数据表相关 # 显示数据库 show dbs # 数据库 use ceshi # 显示表 show tables # 创建集合 db.createCollection('infoB' ...
- 如何将MongoDB数据库的数据迁移到MySQL数据库中
FAQ v2.0终于上线了,断断续续忙了有2个多月.这个项目是我实践的第一个全栈的项目,从需求(后期有产品经理介入)到架构,再到设计(有征询设计师的意见).构建(前端.后台.数据库.服务器部署),也是 ...
- Vc数据库编程基础MySql数据库的表增删改查数据
Vc数据库编程基础MySql数据库的表增删改查数据 一丶表操作命令 1.查看表中所有数据 select * from 表名 2.为表中所有的字段添加数据 insert into 表名( 字段1,字段2 ...
- 使用 MongoDB 存储日志数据
使用 MongoDB 存储日志数据 线上运行的服务会产生大量的运行及访问日志,日志里会包含一些错误.警告.及用户行为等信息.通常服务会以文本的形式记录日志信息,这样可读性强,方便于日常定位问题 ...
随机推荐
- JS Window对象操作思维导图
- 【转】JMeter完成一个java请求的压测
JMeter完成java请求的压力测试详解以及问题总结 原文地址:http://www.cnblogs.com/zhaoxd07/p/4895224.html 作者:KK_Yolanda 这篇文 ...
- Sword pcre库函数学习三
14.pcre_get_substring_list 原型: #include <pcre.h> int pcre_get_substring_list(const char *subje ...
- Sword libcurl使用
libcurl编译 >> ./configure --prefix=/opt/soft/curl --disable-ldap --disable-ldaps >> make ...
- Recommended Practices for WPF Custom Control Developers
I have always found that there isn’t enough documentation about Custom Control development in WPF. M ...
- Qt封装QTcpServer参考资料--QTcpServer多线程实现
目的:每个客户端连接的tcpSocket分别分配一个专门的线程来处理. 实现时分别继承QTcpServer和QTcpScoket实现出自己需要的类. 继承QTcpServer为每个客户端连接时分配线程 ...
- 《FPGA全程进阶---实战演练》第九章 计数器要注意
本小节我们来做一个好玩的事情,就是计数器,还记得在做LED自加实验时我们就曾经提到过关于计数器的相关议题,那么这节我们就来讨论讨论. 探讨一下如下的问题:请用verilog记八个数的写法,分析这个可以 ...
- VISUAL STUDIO 2012下的OPENCV 2.4.7安装过程
邮箱已经收到了Visual Studio 2013的升级通知,但是很多软件如OpenCV.Qt等都只有VS2012的预编译库,还是懒得升级了(除非VS支持C++11了). 网上搜了一些VS2012(或 ...
- (转)关于linux挂载window下共享文件
关于linux挂载window下共享文件的方法: ①事先建立linux下文件夹,例如“ /mnt/linux-folder”②用mount命令挂载 mount -o username=windo ...
- Android多任务切换与Activity启动模式SingleTask之间关系的分析
这里会以多个场景列子进行分析,在分析之前先了解一下基本的概念. Task任务:一系列Activity的集合,这些Activity以栈的形式进行排列(后进先出). 那在什么时候系统会新建一个Task任务 ...