mongodb和php的用法详解


Posted in PHP onMarch 25, 2019

Mognodb数据库连接.

默认格式

$m = new Mongo();

//这里采用默认连接本机的27017端口,当然也可以连接远程主机如 192.168.0.4:27017,如果端口是27017,端口可以省略。

标准连接

$m = new Mongo("mongodb://${username}:${password}@localhost");

实例:

$m = new Mongo("mongodb://127.0.0.1:27017/admin:admin");

数据库的用户名和密码都是admin

数据库操作

插入数据

<?php

//这里采用默认连接本机的27017端口,当然你也可以连接远程主机如192.168.0.4:27017

//如果端口是27017,端口可以省略

$m = new Mongo("mongodb://127.0.0.1:27017/admin:admin");

//选择comedy数据库,如果以前没该数据库会自动创建,也可以用$m->selectDB("comedy");

$db = $m->comedy;

//选择comedy里面的collection集合,相当于RDBMS里面的表,也可以使用

$collection = $db->collection;

$db->selectCollection("collection");

/*********添加一个元素**************/

$obj = array("title" => "php1", "author" => "Bill Watterson");

//将$obj 添加到$collection 集合中

$collection->insert($obj);

/*********添加另一个元素**************/

$obj = array("title" => "huaibei", "online" => true);

$collection->insert($obj);

//$query = array("title" => "huaibei");

$query = array( "_id" => $obj['_id'] );

$cursor = $collection->find($query);

//遍历所有集合中的文档

foreach ($cursor as $obj) {

  echo $obj["title"] . "\n";

  echo $obj["_id"] . "\n";

}

//断开MongoDB连接

$m->close();

带条件的查询

mysql: id = 123

mongo: array(‘id'=>123)

mysql: name link '%bar%'

mongo: array(‘name' => new MongoRegex(‘/.*bar.*/i'))

mysql: where id > 10

mongo: array(‘id' => array(‘$gt' => 10))

mysql: where id >= 10

mongo: array(‘id' => array(‘$gte' => 10))

mysql: where id < 10

mongo: array(‘id' => array(‘$lt' => 10))

mysql: where id <= 10

mongo: array(‘id' => array(‘$lte' => 10))

mysql: where id > 1 and id < 10

mongo: array(‘id' => array(‘$gt' => 1,'$lt' => 10))

mysql: where id <> 10

mongo: array(‘id' => array(‘$ne' => 10))

mysql: where id in(123)

mongo: array(‘id' => array(‘$in' => array(1,2,3)))

mysql: where id not in(123)

mongo: array(‘id' => array(‘$nin' => array(1,2,3)))

mysql: where id = 2 or id = 9

mongo: array(‘id' => array(‘$or' => array(array(‘id'=>2),array(‘id'=>9))))

mysql: order by name asc

mongo: array(‘sort'=>array(‘name'=>1))

mysql: order by name desc

mongo: array(‘sort'=>array(‘name'=>-1))

mysql: limit 0,2

mongo: array(‘limit'=>array(‘offset'=>0,'rows'=>2))

mysql: select name,email

mongo: array(‘name','email')

mysql: select count(name)

mongo: array(‘COUNT') //注意:COUNT为大写

查询时,每个Object插入时都会自动生成一个独特的_id,它相当于RDBMS中的主键,用于查询时非常方便 (_id每一都不同,很像自动增加的id)

<?php

$param = array("name" => "joe");

$collection->insert($param);

$joe = $collection->findOne(array("_id" => $param['_id']));

print_R($joe);

$m->close();

返回结果:Array ( [_id] => MongoId Object ( [$id] => 4fd30e21870da83416000002 ) [name] => joe )

更改字段值

<?php

$sign = array("title" => 'php1');

$param = array("title" => 'php1','author'=>'test');

$joe = $collection->update($sign, $param);

删除一个数据库

$m -> dropDB(“comedy”);

列出所有可用数据库

$m->listDBs();  //无返回值

创建一个MongoDB对象

<?php

$mo = new Mongo();

$db = new MongoDB($mo,'dbname');//通过创建方式获得一个MongoDB对象

删除当前DB

<?php

$db = $mo->dbname;

$db->drop();

获得当前数据库名

<?php

$db = $mo->dbname;

$db->_tostring();

选择想要的collection:

//A:

$mo = new Mongo();

$coll = $mo->dbname->collname;//获得一个collection对象

//B:

$db = $mo->selectDB('dbname');

$coll = $db->collname;

//C:

$db = $mo->dbname;

$coll = $db->collname;

//D:

$db = $mo->dbname;

$coll = $db->selectCollectoin('collname');//获得一个collection对象

插入数据(MongoCollection对象

$coll = $mo->db->foo;

$a = array('a'=>'b');

$options = array('safe'=>true);

$rs =$coll->insert($a,$options);

删除数据库中的记录(MongoCollection对象)

$coll = $mo->db->coll;

$c = array('a'=>1,'s'=>array('$lt'=>100));

$options = array('safe'=>true);

$rs = $coll->remove($c,$options);

更新数据库中的记录(MongoCollection对象)

$coll = $mo->db->coll;

$c = array('a'=>1,'s'=>array('$lt'=>100));

$newobj = array('e'=>'f','x'=>'y');

$options = array('safe'=>true,'multiple'=>true);

$rs = $coll->remove($c,$newobj,$options);

查询collection获得单条记录(MongoCollection类)

$coll = $mo->db->coll;

$query = array('s'=>array('$lt'=>100));

$fields = array('a'=>true,'b'=>true);

$rs = $coll->findOne($query,$fields);

查询collection获得多条记录(MongoCollection类)

$coll = $mo->db->coll;

$query = array('s'=>array('$lt'=>100));

$fields = array('a'=>true,'b'=>true);

$cursor = $coll->find($query,$fields);

//排序

$cursor->sort(array(‘字段'=>-1));(-1倒序,1正序)

//跳过部分记录

$cursor->skip(100);跳过100行

//只显示部分记录

$cursor->limit(100);只显示100行

返回一个游标记录对象MongoCursor。

针对游标对象MongoCursor的操作(MongoCursor类)

$cursor = $coll->find($query,$fields);

while($cursor->hasNext()){

$r = $cursor->getNext();

var_dump($r);

}

//或者

$cursor = $coll->find($query,$fields);

foreache($cursor as $k=>$v){

var_dump($v);

}

//或者

$cursor = $coll->find($query,$fields);

$array= iterator_to_array($cursor);
PHP 相关文章推荐
PHP 得到根目录的 __FILE__ 常量
Jul 23 PHP
PHP 处理图片的类实现代码
Oct 23 PHP
PHP MemCached 高级缓存应用代码
Aug 05 PHP
PHP的加密方式及原理
Jun 14 PHP
Centos PHP 扩展Xchche的安装教程
Jul 09 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
Nov 29 PHP
PHP实现基于回溯法求解迷宫问题的方法详解
Aug 17 PHP
深入理解PHP的远程多会话调试
Sep 21 PHP
PHP PDOStatement::fetchObject讲解
Feb 01 PHP
php项目中类的自动加载实例讲解
Sep 12 PHP
laravel5.1框架model类查询的实现方法
Oct 08 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 PHP
PHP随机数函数rand()与mt_rand()的讲解
Mar 25 #PHP
php微信扫码支付 php公众号支付
Mar 24 #PHP
PHP实现支持CURL字符串证书传输的方法
Mar 23 #PHP
详解PHP变量传值赋值和引用赋值变量销毁
Mar 23 #PHP
laravel实现按时间日期进行分组统计方法示例
Mar 23 #PHP
PHP使用OB缓存实现静态化功能示例
Mar 23 #PHP
Laravel如何自定义command命令浅析
Mar 23 #PHP
You might like
如何批量替换相对地址为绝对地址(利用bat批处理实现)
2013/05/27 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
2013/11/13 PHP
php实现图片局部打马赛克的方法
2015/02/11 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
2018/06/20 PHP
jQuery 学习 几种常用方法
2009/06/11 Javascript
JavaScript 编写匿名函数的几种方法
2010/02/21 Javascript
zShowBox 图片放大展示jquery版 兼容性
2011/09/24 Javascript
imgAreaSelect 中文文档帮助说明
2011/10/08 Javascript
CodeMirror2 IE7/IE8 下面未知运行时错误的解决方法
2012/03/29 Javascript
ext前台接收action传过来的json数据示例
2014/06/17 Javascript
深入理解JavaScript中的箭头函数
2015/07/28 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
2015/12/18 Javascript
JavaScript排序算法动画演示效果的实现方法
2016/10/18 Javascript
node.js中EJS 模板快速入门教程
2017/05/08 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
JS和JQuery实现雪花飘落效果
2017/11/30 jQuery
详解webpack模块化管理和打包工具
2018/04/21 Javascript
js闭包和垃圾回收机制示例详解
2021/03/01 Javascript
[01:11:02]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
利用Psyco提升Python运行速度
2014/12/24 Python
python实现根据月份和日期得到星座的方法
2015/03/27 Python
python实现提取百度搜索结果的方法
2015/05/19 Python
Django实现快速分页的方法实例
2017/10/22 Python
浅谈python 线程池threadpool之实现
2017/11/17 Python
特征脸(Eigenface)理论基础之PCA主成分分析法
2018/03/13 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
2020/04/22 Python
诺心蛋糕官网:LE CAKE
2018/08/25 全球购物
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
UNIX文件名称有什么规定
2013/03/25 面试题
吃空饷专项治理工作实施方案
2014/03/04 职场文书
4s店活动策划方案
2014/08/25 职场文书
干部竞争上岗演讲稿
2014/09/11 职场文书
工伤事故赔偿协议书(标准)
2014/09/29 职场文书
常务副县长“三严三实”对照检查材料思想汇报
2014/10/05 职场文书
创业开店,这样方式更合理
2019/08/26 职场文书
SQL实现LeetCode(177.第N高薪水)
2021/08/04 MySQL