php操作mongoDB实例分析


Posted in PHP onDecember 29, 2014

本文实例讲述了php操作mongoDB的方法。分享给大家供大家参考。具体分析如下:

mongoDB数据库是一种以json格式存储的数据库,非常适用于各种应用开发,这里就来给各位朋友介绍一些mongoDB学习实例.

mongodb想要整合PHP,需要安装Mongo扩展,这个比较简单,现在说一下MongoDB PHPAPI  及用法.

先看一个简单的例子,实例代码如下:

<?php

 $m = new Mongo();  //这里采用默认连接本机的27017端口,当然你也可以连接远程主机如 192.168.0.4:27017,如果端口是27017,端口可以省略 

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

 $collection = $db->collection;  //选择comedy里面的collection集合,相当于RDBMS里面的表,也-可以使用

 $db->selectCollection("collection");

 $obj = array( "title" => "Calvin and Hobbes", "author" => "Bill Watterson" );

 $collection->insert($obj); //将$obj 添加到$collection 集合中 

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

 $collection->insert($obj);

$cursor = $collection->find();

 foreach ($cursor as $obj) {  //遍历所有集合中的文档

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

 } 

$m->close(); //断开MongoDB连接

下面在介绍一些常用的函数,Php代码如下:
$query = array( "i" => 71 );

 $cursor = $collection->find( $query );// 在$collectio集合中查找满足$query的文档

 while( $cursor->hasNext() ) {

 var_dump( $cursor->getNext() );

 }  

 

 $collection -> findOne();//返回$collection集合中第一个文档  

 $collection -> count();  //返回$collection集合中文档的数量  

 $coll->ensureIndex( array( "i" => 1 ) );  // 为i “这一列”加索引 降序排列 

 $coll->ensureIndex( array( "i" => -1, "j" => 1 ) );  // 为i “这一列”加索引 降序排列 j升序

查询时,每个Object插入时都会自动生成一个独特的_id,它相当于RDBMS中的主键,用于查询时非常方便,Php代码如下:
<?php  

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

 $people->insert($person);  

  $joe = $people->findOne(array("_id" => $person['_id']));  

?>

更新时:假如我们想修改下面文档中comments中author的名字,Php代码如下:
{ 

     "_id" : ObjectId("4b06c282edb87a281e09dad9"), 

     "content" : "this is a blog post.",

     "comments" : 

     [

         {

             "author" : "Mike",

             "comment" : "I think that blah blah blah...",

         },

         {

             "author" : "John",

             "comment" : "I disagree."

         }

     ]

}

为了改变内部的一个域,我们用 $set,保证文档中其他域不被移除,并且comment的索引也变化,Php代码如下:
<?php 

$collection->update($criteria, array('$set' => array("comments.1" => array("author" => "Jim")))); //$criteria 为要更新的元素  

?>

删除一个数据库,Php代码如下:
$m -> dropDB("comedy");

列出所有可用数据库,Php代码如下:

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

好了就先写这么多了,有兴趣的话可以在网上搜到其他的关于Mongo-php API的用法.

命令行使用实例:

1. db.system.users.find()
 
2. db.users.count()
 
3. db.users.ensureIndex({password:-1})
 
4. use test
 
5. db.users.getIndexes()
 
6. db.repairDatabase()
 
7. show users
 
8. show dbs
 
9. db.users.find({username:{$in:['4d81a82398790']}}).explain()
 
10. db.users.dropIndexes()
 
11. db.users.find().count()
 
12. db.users.find().limit(5)
 
13. db.users.find({"username":"ssa"}) 
 
14. show collections
 
15. db.users.remove()
 
16. db.user.remove({'username':'admin'})
 
17. db.user.insert({'username':'admin','age':21,'nickname':'admin'})
 
18. db.user.save({'username':'admin','age':21,'info':['12','12313','zzsd']})
 
19. db.createCollection("user") 
 
20. db.dropDatabase()
 
21. show collections
 
22. db.test.drop()
 
23. db.copyDatabase('test','test1')
 
24. show profile
 
25. db.printCollectionStats()
 
26. db.addUser('admin','admin123') 
 
27. db.setProfilingLevel(2);
 
28. db.setProfilingLevel( 1 , 10 );
 
29. db.system.profile.find()

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
一个ubbcode的函数,速度很快.
Oct 09 PHP
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
Oct 15 PHP
php 中英文语言转换类代码
Aug 11 PHP
xml在joomla表单中的应用详解分享
Jul 19 PHP
浅析get与post的一些特殊情况
Jul 28 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
Nov 04 PHP
php页面函数设置超时限制的方法
Dec 01 PHP
非常实用的PHP常用函数汇总
Dec 17 PHP
利用php做服务器和web前端的界面进行交互
Oct 31 PHP
PHP+Ajax实现的无刷新分页功能详解【附demo源码下载】
Jul 03 PHP
PHP如何解决微信文章图片防盗链
Dec 09 PHP
PHP队列场景以及实现代码实例详解
Feb 26 PHP
Yii实现多数据库主从读写分离的方法
Dec 29 #PHP
php调用mysql存储过程实例分析
Dec 29 #PHP
php生成excel列名超过26列大于Z时的解决方法
Dec 29 #PHP
php+mysqli实现批量替换数据库表前缀的方法
Dec 29 #PHP
PHP跨平台获取服务器IP地址自定义函数分享
Dec 29 #PHP
PHP中使用xmlreader读取xml数据示例
Dec 29 #PHP
php读取远程gzip压缩网页的方法
Dec 29 #PHP
You might like
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
2010/06/11 PHP
PHP设置进度条的方法
2015/07/08 PHP
php mysql获取表字段名称和字段信息的三种方法
2016/11/13 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
php用户名的密码加密更安全的方法
2019/06/21 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
js 判断脚本加载完毕的代码
2011/07/13 Javascript
理运用命名空间让js不产生冲突避免全局变量的泛滥
2014/06/15 Javascript
了不起的node.js读书笔记之node.js中的特性
2014/12/22 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
2015/02/06 Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
2016/06/16 Javascript
完美解决jQuery 鼠标快速滑过后,会执行多次滑出的问题
2016/12/08 Javascript
Bootstrap 填充Json数据的实例代码
2017/01/11 Javascript
详解vue-cli中配置sass
2017/06/21 Javascript
浅谈Vue.js中ref ($refs)用法举例总结
2017/12/19 Javascript
nodejs基于express实现文件上传的方法
2018/03/19 NodeJs
微信小程序BindTap快速连续点击目标页面跳转多次问题处理
2019/04/08 Javascript
jQuery 查找元素操作实例小结
2019/10/02 jQuery
解决Vue 给mapState中定义的属性赋值报错的问题
2020/06/22 Javascript
k8s node节点重新加入master集群的实现
2021/02/22 Javascript
[03:02]2014DOTA2西雅图邀请赛 让队员自己告诉你DK NAVI备战情况
2014/07/08 DOTA
[26:52]LGD vs EG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
gearman的安装启动及python API使用实例
2014/07/08 Python
python中循环语句while用法实例
2015/05/16 Python
PyCharm2020.3.2安装超详细教程
2021/02/08 Python
日本非常有名的内衣丝袜品牌:GUNZE
2017/01/06 全球购物
Clarks鞋法国官方网站:英国其乐鞋品牌
2018/02/11 全球购物
香港彩色隐形眼镜在线商店:Stunninglens(全球免费送货)
2019/05/10 全球购物
医院后勤自我鉴定
2013/10/13 职场文书
五年级语文教学反思
2014/01/30 职场文书
《灯光》教学反思
2014/02/08 职场文书
大学生党员暑假实践(活动总结)
2019/08/21 职场文书
使用Html+Css实现简易导航栏功能(导航栏遇到鼠标切换背景颜色)
2021/04/07 HTML / CSS
5种 JavaScript 方式实现数组扁平化
2021/10/05 Javascript
JS数组去重详情
2021/11/07 Javascript
Nginx设置HTTPS的方法步骤 443证书配置方法
2022/03/21 Servers