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数据库连接
Oct 09 PHP
粗略计算在线时间,bug:ip相同
Dec 09 PHP
用PHP实现读取和编写XML DOM代码
Apr 07 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
Oct 25 PHP
使用ob系列函数实现PHP网站页面静态化
Aug 13 PHP
浅谈php命令行用法
Feb 04 PHP
使用php转义输出HTML到JavaScript
Mar 27 PHP
在php和MySql中计算时间差的方法详解
Mar 27 PHP
详谈PHP程序Laravel 5框架的优化技巧
Jul 18 PHP
CodeIgniter框架钩子机制实现方法【hooks类】
Aug 21 PHP
php实现有序数组旋转后寻找最小值方法
Sep 27 PHP
phpinfo无法显示的原因及解决办法
Feb 15 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
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
2012/05/07 PHP
为何说PHP引用是个坑,要慎用
2018/04/02 PHP
一个不错的用JavaScript实现的UBB编码函数
2007/03/09 Javascript
jQuery 图像裁剪插件Jcrop的简单使用
2009/05/22 Javascript
让ie运行js时提示允许阻止内容运行的解决方法
2010/10/24 Javascript
formvalidator验证插件中有关ajax验证问题
2013/01/04 Javascript
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
jquery实现ajax提交form表单的方法总结
2014/03/03 Javascript
JavaScript中神奇的call()方法
2015/03/12 Javascript
js简单判断移动端系统的方法
2016/02/25 Javascript
AngularJS之依赖注入模拟实现
2016/08/19 Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
2016/10/24 Javascript
BootStrap table使用方法分析
2016/11/08 Javascript
Vue.js系列之项目搭建(1)
2017/01/03 Javascript
微信小程序(三):网络请求
2017/01/13 Javascript
Vue页面骨架屏的实现方法
2018/05/22 Javascript
微信小程序基于movable-view实现滑动删除效果
2020/01/08 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
如何用JS模拟实现数组的map方法
2020/07/30 Javascript
10种检测Python程序运行时间、CPU和内存占用的方法
2015/04/01 Python
使用Python来编写HTTP服务器的超级指南
2016/02/18 Python
Python入门_条件控制(详解)
2017/05/16 Python
代码讲解Python对Windows服务进行监控
2018/02/11 Python
利用python GDAL库读写geotiff格式的遥感影像方法
2018/11/29 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
2020/04/13 Python
Django models文件模型变更错误解决
2020/05/11 Python
Python实现将元组中的元素作为参数传入函数的操作
2020/06/05 Python
python实现控制台输出颜色
2021/03/02 Python
女性时尚在线:IVRose
2019/02/23 全球购物
读书演讲主持词
2014/03/18 职场文书
五水共治捐款倡议书
2014/05/14 职场文书
HTML+CSS制作心跳特效的实现
2021/05/26 HTML / CSS
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL
使用Redis做预定库存缓存功能
2022/04/02 Redis
SQL中的连接查询详解
2022/06/21 SQL Server
JS前端使用Canvas快速实现手势解锁特效
2022/09/23 Javascript