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 相关文章推荐
使用sockets:从新闻组中获取文章(二)
Oct 09 PHP
dedecms防止FCK乱格式化你的代码的修改方法
Mar 17 PHP
域名和cookie问题(域名后缀)
Oct 10 PHP
PHP设置一边执行一边输出结果的代码
Sep 30 PHP
php实现按文件名搜索文件的远程文件查找器
May 10 PHP
php使用PDO方法详解
Dec 27 PHP
windows下安装php的memcache模块的方法
Apr 07 PHP
PHP的Yii框架中过滤器相关的使用总结
Mar 29 PHP
php中的登陆login实例代码
Jun 20 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
Aug 31 PHP
浅谈PHP中如何实现Hook机制
Nov 14 PHP
解决laravel 出现ajax请求419(unknown status)的问题
Sep 03 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
Terran历史背景
2020/03/14 星际争霸
聊天室php&amp;mysql(三)
2006/10/09 PHP
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
PHP+mysql实现的三级联动菜单功能示例
2019/02/15 PHP
ext实现完整的登录代码
2008/08/08 Javascript
toString()一个会自动调用的方法
2010/02/08 Javascript
基于jquery的超简单上下翻
2010/04/20 Javascript
jQuery链使用指南
2015/01/20 Javascript
对象题目的一个坑 理解Javascript对象
2015/12/22 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
2017/02/10 Javascript
vue做移动端适配最佳解决方案(亲测有效)
2018/09/04 Javascript
Bootstrap-table使用footerFormatter做统计列功能
2018/09/07 Javascript
微信小程序文章详情页面实现代码
2018/09/10 Javascript
vue1.0和vue2.0的watch监听事件写法详解
2018/09/11 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
Vue父组件如何获取子组件中的变量
2019/07/24 Javascript
浅谈Vue3 Composition API如何替换Vue Mixins
2020/04/29 Javascript
深入分析jQuery.one() 函数
2020/06/03 jQuery
Electron整合React使用搭建开发环境的步骤详解
2020/06/07 Javascript
vue实现轮播图帧率播放
2021/01/26 Vue.js
详解Python中的装饰器、闭包和functools的教程
2015/04/02 Python
快速解决安装python没有scripts文件夹的问题
2018/04/03 Python
python使用scrapy发送post请求的坑
2018/09/04 Python
解决python给列表里添加字典时被最后一个覆盖的问题
2019/01/21 Python
python实现用类读取文件数据并计算矩形面积
2020/01/18 Python
django的模型类管理器——数据库操作的封装详解
2020/04/01 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
使用HTML5进行SVG矢量图形绘制的入门教程
2016/02/19 HTML / CSS
财务专业大学生职业生涯规划范文
2013/12/30 职场文书
大一学生职业生涯规划
2014/03/11 职场文书
科级干部群众路线教育实践活动对照检查材料思想汇报
2014/09/20 职场文书
政风行风整改方案
2014/10/25 职场文书
天河观后感
2015/06/11 职场文书
pytorch通过训练结果的复现设置随机种子
2021/06/01 Python
Redis中key的过期删除策略和内存淘汰机制
2022/04/12 Redis