一、连接 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. Ubuntu下的OpenResty 安装

    安装前的准备 您必须将这些库 perl 5.6.1+, libreadline, libpcre, libssl安装在您的电脑之中. 对于 Linux来说, 您需要确认使用 ldconfig 命令,让 ...

  2. Java设计模式(18)策略模式(Strategy模式)

    Strategy是属于设计模式中 对象行为型模式,主要是定义一系列的算法,把这些算法一个个封装成单独的类. Stratrgy应用比较广泛,比如,公司经营业务变化图,可能有两种实现方式,一个是线条曲线, ...

  3. I/O模型(同步、非同步、阻塞、非阻塞)总结

    I/O:同步(synchronous).异步(asynchronous).阻塞(blocking).非阻塞(nonblocking) 1.I/O内部机制 出于安全考虑,用户程序(用户态)是没办法直接操 ...

  4. 关闭R语言载入包时候的警告

    options(warn =-1)

  5. Linux gcc编译之-std选项

    用GCC编译代码时候后面带有-std=c++1z 的选项,这是指定c/c++的标准.具体的标准如下,详细信息可以看引用里面的详细说明

  6. yizhihx ubuntu config

    install shadowsocks:http://www.cnblogs.com/huangshiyu13/p/8973967.html download: https://pan.baidu.c ...

  7. MyBatis错误:Result Maps collection already contains value for novel.storage.mapper.NovelMapper.BaseResultMap

    今天在写项目的时候遇到一个问题如下: org.apache.ibatis.exceptions.PersistenceException: ### Error building SqlSession. ...

  8. (转)LCD:LCD常用接口原理篇

    关键词:android LCD TFT TTL(RGB)  LVDS  EDP MIPI  TTL-LVDS  TTL-EDP平台信息:内核:linux2.6/linux3.0系统:android/a ...

  9. Github 提交本地代 到远程 菜鸟 简明教程

    方法1: 1. 右击项目文件夹  Git Bash Here 或   Git clone  Url  远程仓库地址  Directory  本地文件夹 2. 拷贝(新建)项目文件 3. 添加项目文件 ...

  10. spring + springMVC + spring Data + jpa + maven 项目框架搭建

    首先看一下项目结构: 所用到的jar(pom.xml): <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:x ...