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 相关文章推荐
使用MaxMind 根据IP地址对访问者定位
Oct 09 PHP
PHP中防止SQL注入攻击和XSS攻击的两个简单方法
Apr 15 PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
Jun 10 PHP
Linux编译升级php的详细方法
Nov 04 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
Jun 04 PHP
PHP图片加水印实现方法
May 06 PHP
PHP QRCODE生成彩色二维码的方法
May 19 PHP
PHP购物车类Cart.class.php定义与用法示例
Jul 20 PHP
Android AsyncTack 异步任务实例详解
Nov 02 PHP
PHP 微信扫码支付源代码(推荐)
Nov 03 PHP
PHP实现添加购物车功能
Mar 06 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 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
php模板中出现空行解决方法
2011/03/08 PHP
openPNE常用方法分享
2011/11/29 PHP
基于xcache的配置与使用详解
2013/06/18 PHP
php实现用于计算执行时间的类实例
2015/04/18 PHP
PHP中PDO的事务处理分析
2016/04/07 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
解决AJAX中跨域访问出现'没有权限'的错误
2008/08/20 Javascript
js判断60秒以及倒计时示例代码
2014/01/24 Javascript
Javascript节点关系实例分析
2015/05/15 Javascript
基于JavaScript创建动态Dom
2015/12/08 Javascript
简单理解JavaScript中的封装与继承特性
2016/03/19 Javascript
JS验证逗号隔开可以是中文字母数字
2016/04/22 Javascript
JS实现获取来自百度,Google,soso,sogou关键词的方法
2016/12/21 Javascript
利用js判断手机是否安装某个app的多种方案
2017/02/13 Javascript
Javascript中的async awai的用法
2017/05/17 Javascript
20行JS代码实现网页刮刮乐效果
2017/06/23 Javascript
使用vue-router设置每个页面的title方法
2018/02/11 Javascript
layer.open关闭父窗口 以及调用父页面的方法
2018/08/17 Javascript
Nodejs实现图片上传、压缩预览、定时删除功能
2019/10/25 NodeJs
vue 将多个过滤器封装到一个文件中的代码详解
2020/09/05 Javascript
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
python实现聚类算法原理
2018/02/12 Python
python Pandas如何对数据集随机抽样
2019/07/29 Python
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
澳大利亚在线百货商店:Real Smart
2017/08/13 全球购物
皇家阿尔伯特瓷器美国官网:Royal Albert美国
2020/02/16 全球购物
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
教师党员个人总结
2015/02/10 职场文书
2016自主招生校长推荐信范文
2015/03/23 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
社区艾滋病宣传活动总结
2015/05/07 职场文书
圆明园观后感
2015/06/03 职场文书
纪委立案决定书
2015/06/24 职场文书
银行文明优质服务培训心得体会
2016/01/09 职场文书
退休劳动合同怎么写?
2019/10/25 职场文书
Win11如何启用启动修复 ? Win11执行启动修复的三种方法
2022/04/08 数码科技