一、连接 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. js jQuery 右键菜单 清屏

    主要用到了oncontextmenu事件,在oncontextmenu事件中使用return false 屏蔽掉原生右键菜单,再使用event获取鼠标的坐标位置,设置自定义菜单的位置. http:// ...

  2. 【协议学习】SIP基本场景分析

    1.SIP业务基本知识 1.1 业务介绍 会话初始协议(Session Initiation Protocol)是一种信令协议,用于初始.管理和终止网络中的语音和视频会话,具体地说就是用来生成.修改和 ...

  3. 《FPGA全程进阶---实战演练》第一章之如何学习FPGA

    对于很多初学者,大部分都是急于求成,熟不知越是急于求成,最终越是学无所成,到头来两手空空,要学好FPGA,必须弄懂FPGA本质的一些内容. 1.FPGA内部结构及基本原理 FPGA是可以编程的,必须通 ...

  4. strcpy_s与strcpy的区别

    strcpy_s和strcpy()函数的功能几乎是一样的.];];strcpy_s(str1,,;}#include<iostream>  #include<]; ]; strcpy ...

  5. 【CUDA学习】结构体指针复制

    内核函数中要用data结构作用参数 typedef struct { int* value; int* num; } data; //host端 data* h_input; h_input=(dat ...

  6. Solr系列四:Solr(solrj 、索引API 、 结构化数据导入)

    一.SolrJ介绍 1. SolrJ是什么? Solr提供的用于JAVA应用中访问solr服务API的客户端jar.在我们的应用中引入solrj: <dependency> <gro ...

  7. Android 开源动画框架:NineOldAndroids

    介绍 Android 平台提供两种动画系统:Property Animation(Android 3.0引入)和View Animation.这两种动画都可供选择,但是Property Animati ...

  8. SecureCRT连接linux,vim颜色显示问题

    为什么使用VIM?由于具有颜色显示的功能.而且还支持很多程序语法.VIM能够帮助你直接进行程序除错.可是在SecureCRT连接Linux后显示就是黑白,感觉非常不爽! ! 怎么办? vim编敲代码也 ...

  9. Linux 定时任务crontab_014

    1.  crontab命令概念 crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行. cron 系统调度进程. 可以使 ...

  10. C# 判断字符串为空有哪几种方法

    Length法:);Empty法:bool isEmpty = (str == String.Empty);General法:bool isEmpty = (str == ""); ...