一、连接 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 查数据的各种姿势的更多相关文章

  1. MongoDB系列----查

    开启查询: db.getMongo().setSlaveOk() 查版本: db.servion(); db.serverBuildInfo(); db.serverStatus().storageE ...

  2. mongodb 增查改删

    我们在  MongoDB 之 你得知道MongoDB是个什么鬼 MongoDB - 1  中学习了如果安装部署一个 MongoDB 如果没看到我的金玉良言的话,就重新打开一次客户端和服务端吧 本章我们 ...

  3. mongodb 物理删除数据

    刚开始用mongodb的时候,感觉很好用,速度很快,不过后面就遇到一个问题,数据物理内存一直增加,删除表也不管用. 然后网上找了各种办法,最后发现一个办法管用,就是物理删除存储数据. 操作如下: 1. ...

  4. MongoDB如何存储数据

    想要深入了解MongoDB如何存储数据之前,有一个概念必须清楚,那就是Memeory-Mapped Files. Memeory-Mapped Files 下图展示了数据库是如何跟底层系统打交道的. ...

  5. 直接查数据导出xls

    直接查数据导出xls/usr/bin/mysql --default-character-set=utf8 -uroot -p"123456" -e"select * f ...

  6. 使用highcharts显示mongodb中的数据

    1.mongodb数据表相关 # 显示数据库 show dbs # 数据库 use ceshi # 显示表 show tables # 创建集合 db.createCollection('infoB' ...

  7. 如何将MongoDB数据库的数据迁移到MySQL数据库中

    FAQ v2.0终于上线了,断断续续忙了有2个多月.这个项目是我实践的第一个全栈的项目,从需求(后期有产品经理介入)到架构,再到设计(有征询设计师的意见).构建(前端.后台.数据库.服务器部署),也是 ...

  8. Vc数据库编程基础MySql数据库的表增删改查数据

    Vc数据库编程基础MySql数据库的表增删改查数据 一丶表操作命令 1.查看表中所有数据 select * from 表名 2.为表中所有的字段添加数据 insert into 表名( 字段1,字段2 ...

  9. 使用 MongoDB 存储日志数据

    使用 MongoDB 存储日志数据     线上运行的服务会产生大量的运行及访问日志,日志里会包含一些错误.警告.及用户行为等信息.通常服务会以文本的形式记录日志信息,这样可读性强,方便于日常定位问题 ...

随机推荐

  1. LDAP none、simple、strong 笔记

    // 该笔记仍在调研中!!不确保中有错误信息!最终目的是想用java实现这三种认证方式. 1.ldaps://  注意多了个s 参考:https://mail.python.org/pipermail ...

  2. 微信小程序——picker通过value返回你想获取的值

    关于微信小程序中的picker使用方法可以访问:picker-小程序 从它的官方文档中,可以看出它返回的value值是它range的下标: 在项目中,我们大多数时候传的值并不是需要这个下标,而是其他的 ...

  3. paoding分词

    Paoding 详细介绍 庖丁中文分词库是一个使用Java开发的,可结合到Lucene应用中的,为互联网.企业内部网使用的中文搜索引擎分词组件.Paoding填补了国内中文分词方面开源组件的空白,致力 ...

  4. c 二维数组动态分配和释放

    c动态语言 函数声明的头文件在<stdlib.h>里 使用malloc函数为字符串分配内存 -->记得释放内存 free() #include <stdio.h> #in ...

  5. 年中总结大会--总结学习笔记, 技术部IT部门年中总结报告该怎么写

    组织年中总结大会该如何组织 1. 通知每一位员工, 总结自己的半年工作(提前多少天, 截至日期) 2. 会场布置 3. 部门领导总结 4. 中场休息, 或节目表演, 合影等 5. 表彰 6. 交流(提 ...

  6. Failed to import package with error: Couldn't decompress package的解决方案

    问题的出现 在Unity中导入一个Package文件,出现以下出错信息 解决方案 遇到这样的报错信息,一般就是要将该文件包的存储路径设置为英文,因为Unity不识别中文路径:其次对文件包的命名中间应没 ...

  7. Linux 安装 MongoDB数据库

    1下载: wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.7.tgz (下载较慢) 2.安装: mv mongodb-li ...

  8. (转)st(state-threads) coroutine调度

    目录(?)[-] EPOLL和TIMEOUT TIME TIMEOUT Deviation   st(state-threads) https://github.com/winlinvip/state ...

  9. java EE 环境配置(JDK + Tomcat + Eclipse for java EE)

    这学期的课程多数都是java语言的,像Java Web程序设计,java课程设计案例,所以趁周末先把软件,环境配置好. 下载JDK 先给上下载链接:http://www.oracle.com/tech ...

  10. MySQL ERROR 1045 (28000): Access denied for user 'root'@'localhost'解决

    MySQL ERROR 1045 (28000): Access denied for user 'root'@'localhost'解决: # /etc/init.d/mysql stop # my ...