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 相关文章推荐
应用开发中涉及到的css和php笔记分享
Aug 02 PHP
PHP实现克鲁斯卡尔算法实例解析
Aug 22 PHP
Yii的CDbCriteria查询条件用法实例
Dec 04 PHP
linux下实现定时执行php脚本
Feb 13 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
Apr 22 PHP
php发送html格式文本邮件的方法
Jun 10 PHP
php无序树实现方法
Jul 28 PHP
php自定义函数实现JS的escape的方法示例
Jul 07 PHP
利用PHP如何写APP接口详解
Aug 23 PHP
Zend Framework常用校验器详解
Dec 09 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
Apr 01 PHP
thinkphp5框架扩展redis类方法示例
May 06 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 使用fopen函数创建、打开文件详解及实例代码
2016/09/24 PHP
Ajax+Json 级联菜单实现代码
2009/10/27 Javascript
密码强度检测效果实现原理与代码
2013/01/04 Javascript
window.open打开页面居中显示的示例代码
2013/12/27 Javascript
jQuery使用元素属性attr赋值详解
2015/02/27 Javascript
JS实现FLASH幻灯片图片切换效果的方法
2015/03/04 Javascript
JS实现简单的键盘打字的效果
2015/04/24 Javascript
js实现的动画导航菜单效果代码
2015/09/10 Javascript
JS中的进制转换以及作用
2016/06/26 Javascript
教你如何在Node.js中使用jQuery
2016/08/28 Javascript
Windows环境下npm install 报错: operation not permitted, rename的解决方法
2016/09/26 Javascript
JSON与String互转的实现方法(Javascript)
2016/09/27 Javascript
Javascript调试之console对象——你不知道的一些小技巧
2017/07/10 Javascript
vue中的scope使用详解
2017/10/29 Javascript
Angular单元测试之事件触发的实现
2020/01/20 Javascript
详解vue 组件
2020/06/11 Javascript
用vite搭建vue3应用的实现方法
2021/02/22 Vue.js
[49:27]LGD vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[43:41]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
Python获取单个程序CPU使用情况趋势图
2015/03/10 Python
在Python程序中实现分布式进程的教程
2015/04/28 Python
python3实现SMTP发送邮件详细教程
2018/06/19 Python
python 获取图片分辨率的方法
2019/01/08 Python
Python 操作 MySQL数据库
2020/09/18 Python
html5表单及新增的改良元素详解
2016/06/07 HTML / CSS
女性时尚在线:IVRose
2019/02/23 全球购物
对于没有初始化的变量的初始值可以作怎样的假定
2014/10/12 面试题
初中美术教学反思
2014/01/29 职场文书
弘扬雷锋精神活动演讲稿
2014/03/04 职场文书
个人承诺书怎么写
2014/05/24 职场文书
先进班组材料范文
2014/12/25 职场文书
优秀员工自荐书
2015/03/06 职场文书
幼儿园家长反馈意见
2015/06/03 职场文书
Java Socket实现Redis客户端的详细说明
2021/05/26 Redis
草系十大最强宝可梦,纸片人上榜,榜首大家最熟悉
2022/03/18 日漫
Oracle使用别名的好处
2022/04/19 Oracle