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 相关文章推荐
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
Oct 13 PHP
PHP 图片上传代码
Sep 13 PHP
php smarty截取中文字符乱码问题?gb2312/utf-8
Nov 07 PHP
zf框架的session会话周期及次数限制使用示例
Mar 13 PHP
php中base64_decode与base64_encode加密解密函数实例
Nov 24 PHP
PHP内置的Math函数效率测试
Dec 01 PHP
Yii实现简单分页的方法
Apr 29 PHP
微信公众号开发之文本消息自动回复php代码
Aug 08 PHP
微信公众号开发客服接口实例代码
Oct 21 PHP
laravel框架实现后台登录、退出功能示例
Oct 31 PHP
PHP数组访问常用方法解析
Sep 05 PHP
php实现图片压缩处理
Sep 09 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
re0第二季蕾姆被制作组打入冷宫!艾米莉亚女主扶正,原因唏嘘
2020/04/02 日漫
php 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
phpExcel中文帮助手册之常用功能指南
2014/08/18 PHP
Codeigniter实现发送带附件的邮件
2015/03/19 PHP
FastCGI 进程意外退出造成500错误
2015/07/26 PHP
PHP实现用户登录的案例代码
2018/05/10 PHP
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
js 图片等比例缩放代码
2010/05/13 Javascript
javascript使用eval或者new Function进行语法检查
2010/10/16 Javascript
js 一个关于图片onload加载的事
2013/11/10 Javascript
jQuery+css实现百度百科的页面导航效果
2014/12/16 Javascript
AngularJS 中的Promise --- $q服务详解
2016/09/14 Javascript
Vue源码解析之数组变异的实现
2018/12/04 Javascript
Vue3.0数据响应式原理详解
2019/10/09 Javascript
ES11屡试不爽的新特性,你用上了几个
2020/10/21 Javascript
python模拟enum枚举类型的方法小结
2015/04/30 Python
Python爬虫框架Scrapy实战之批量抓取招聘信息
2015/08/07 Python
Python中turtle作图示例
2017/11/15 Python
Python3生成手写体数字方法
2018/01/30 Python
python删除某个字符
2018/03/19 Python
pygame游戏之旅 添加碰撞效果的方法
2018/11/20 Python
Python 去除字符串中指定字符串
2020/03/05 Python
Django中FilePathField字段的用法
2020/05/21 Python
非常震撼的纯CSS3人物行走动画
2016/02/24 HTML / CSS
HTML5 解决苹果手机不能自动播放音乐问题
2017/12/27 HTML / CSS
大学生实习自我鉴定
2013/12/11 职场文书
校三好学生主要事迹
2014/01/11 职场文书
小学英语教学反思案例
2014/02/04 职场文书
大学生简短的自我评价分享
2014/02/20 职场文书
女生节标语
2014/06/26 职场文书
三峡导游词
2015/01/31 职场文书
爱心捐赠活动简讯
2015/07/20 职场文书
安全主题班会教案
2015/08/12 职场文书
JS ES6异步解决方案
2021/04/29 Javascript
SQL优化老出错,那是你没弄明白MySQL解释计划用法
2021/11/27 MySQL
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android