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设计模式学习实例之单例模式
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <t ...
- 经典ajax 状态响应图
- DPI (深度报文检测) 关于DPI的学习笔记
关于DPI的学习笔记 先看一下定义 : DPI(Deep Packet Inspection)是一种基于数据包的深度检测技术,针对不同的网络应用层载荷(例如HTTP.DNS等)进行深度检测,通过对报文 ...
- 技能UP:SAP OBYC自动记账的实例说明(含value String应用说明)
一. 自动过账原理 在MM模块的许多操作都能实现在FI模块自动过账,如PO收货.发票验证(LIV).工单发料.向生产车间发料等等.不用说,一定需要在IMG中进行配置才可以实现自动处理.但SAP实现的这 ...
- VIM下的可视模式的相关知识
三种可视模式: v 激活面向字符的可视模式: V 激活面向行的可视模式: ctrl+v 激活面向列块的可视模式: 选择高亮区: 上面的 v 是可以与跳转指令 以及表示范围的指令组合使用的. 如:vl, ...
- jpa无外键配置
在用jpa这种orm框架时,有时我们实体对象存在关联关系,但实际的业务场景可能不需要用jpa来控制数据库创建数据表之间的关联约束,这时我们就需要消除掉数据库表与表之间的外键关联.但jpa在处理建立外键 ...
- nodejs基础 -- express框架
Node.js Express 框架 Express 简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP ...
- Error: package or namespace load failed for ‘rJava’:
https://stackoverflow.com/questions/30738974/rjava-load-error-in-rstudio-r-after-upgrading-to-osx-yo ...
- 使用 mysql_use_result 还是使用 mysql_store_result?
From: http://my.oschina.net/moooofly/blog/186456 本文整理了关于“使用 mysql_use_result 还是 mysql_store_result”的 ...
- unity3d 读取usb摄像头
using UnityEngine; using System.Collections; public class C : MonoBehaviour { private WebCamTexture ...