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和ACCESS写聊天室(九)
Oct 09 PHP
php session 检测和注销
Mar 16 PHP
php中static静态变量的使用方法详解
Jun 04 PHP
PHP与javascript实现变量交互的示例代码
Jul 23 PHP
php更新修改excel中的内容实例代码
Feb 26 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
Jun 19 PHP
PHP防止表单重复提交的几种常用方法汇总
Aug 19 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
Dec 24 PHP
PHP判断网络文件是否存在的方法
Mar 12 PHP
yii2中的rules 自定义验证规则详解
Apr 19 PHP
弹出模态框modal的实现方法及实例
Sep 19 PHP
php微信开发之音乐回复功能
Jun 14 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计划任务、定时执行任务的实现代码
2011/04/23 PHP
PHP中使用memcache存储session的三种配置方法
2014/04/05 PHP
php识别翻转iphone拍摄的颠倒图片
2018/05/17 PHP
node.js中的fs.rename方法使用说明
2014/12/16 Javascript
Bootstrap中的表单验证插件bootstrapValidator使用方法整理(推荐)
2016/06/21 Javascript
详解handlebars+require基本使用方法
2016/12/21 Javascript
Angular.Js之Scope作用域的学习教程
2017/04/27 Javascript
前端主流框架vue学习笔记第一篇
2017/07/26 Javascript
全新打包工具parcel零配置vue开发脚手架
2018/01/11 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
2018/04/18 jQuery
react 创建单例组件的方法
2018/04/26 Javascript
实例详解ztree在vue项目中使用并且带有搜索功能
2018/08/24 Javascript
jquery 动态遍历select 赋值的实例
2018/09/12 jQuery
从零开始封装自己的自定义Vue组件
2018/10/09 Javascript
jQuery pagination分页示例详解
2018/10/23 jQuery
解决vue项目中页面调用数据 在数据加载完毕之前出现undefined问题
2019/11/14 Javascript
浅谈vue权限管理实现及流程
2020/04/23 Javascript
使用python绘制常用的图表
2016/08/27 Python
python中实现指定时间调用函数示例代码
2017/09/08 Python
Python简单定义与使用二叉树示例
2018/05/11 Python
python numpy和list查询其中某个数的个数及定位方法
2018/06/27 Python
python+opencv实现高斯平滑滤波
2020/07/21 Python
详解Python 调用C# dll库最简方法
2019/06/20 Python
python 创建一维的0向量实例
2019/12/02 Python
jupyter 添加不同内核的操作
2021/02/06 Python
全球最大的服务市场:Fiverr
2017/01/03 全球购物
三星法国官方网站:Samsung法国
2019/10/31 全球购物
《黄河颂》教学反思
2014/02/07 职场文书
外贸员简历中的自我评价
2014/03/04 职场文书
事业单位绩效考核实施方案
2014/03/27 职场文书
四风个人对照检查材料思想汇报(办公室通用版)
2014/10/07 职场文书
致百米运动员广播稿5篇
2014/10/13 职场文书
党的群众路线教育实践活动心得体会(乡镇)
2014/11/03 职场文书
2015毕业寄语大全
2015/02/26 职场文书
干部考核工作总结2015
2015/07/24 职场文书
MySQL中dd::columns表结构转table过程及应用详解
2022/09/23 MySQL