-
【转】PHP操纵MongoDB【NoSQL】
添加时间:2013-6-21 点击量:原文:http://blog.sina.com.cn/s/blog_4b67d3240101519b.html
一、MongoDB简介
MongoDB (名称来自humongous) 是一个可扩大的、高机能、开源、模式、面向文档的数据库,集文档数据库、键值对存储和关系型数据库的长处于一身。官方站点:http://www.mongodb.org/,MongoDB特点:
•面向文档存储(类JSON数据模式简单而强大)
•动态查询
•全索引支撑,扩大到内部对象和内嵌数组
•查询记录解析
•快速,当场更新
•高效存储二进制大对象 (比如照片和视频)
•复制和故障切换支撑
•Auto-Sharding主动分片支撑云级扩大性
•MapReduce 支撑错杂聚合
•贸易支撑,培训和咨询
二、安装MongoDB安装MongoDB很是的简单,仅需紧缩包解压运行号令即可,地址:http://www.mongodb.org/downloads,本文为windows平台,MongoDB运行号令:>bin/mongod。提示:起首要创建存储数据的文件夹,MongoDB 默认存储数据目次为 /data/db/ (或者 c:\data\db),当然你也可以批改成不合目次,只须要指定 --dbpath 参数,eg:
>bin/mongod --dbpath=d:\mgdata\db
三、安装MongoDB PHP扩大
按照本身的PHP版本PHP扩大:http://github.com/mongodb/mongo-php-driver/downloads,提示:
1、VC适Apache、VC9合适IIS;
2、Thread safe合适PHP以模块运行体式格式、Non-thread safe合适CGI运行体式格式。
批改php.ini,参加:extension=php_mongo.dll,重启Web办事器。
四、PHP示例
1、连接Mongo办事器
view plaincopy to clipboardprint?
<?php
//连接localhost:27017
¥conn = new Mongo();
//连接长途主机默认端口
¥conn = new Mongo(test.com);
//连接长途主机22011端口
¥conn = new Mongo(test.com:22011);
//MongoDB有效户名暗码
¥conn = new Mongo(mongodb://¥{username}:¥{password}@localhost)
//MongoDB有效户名暗码并指定命据库blog
¥conn = new Mongo(mongodb://¥{username}:¥{password}@localhost/blog);
//多个办事器
¥conn = new Mongo(mongodb://localhost:27017,localhost:27018);
?>
<?php
//连接localhost:27017
¥conn = new Mongo();
//连接长途主机默认端口
¥conn = new Mongo(test.com);
//连接长途主机22011端口
¥conn = new Mongo(test.com:22011);
//MongoDB有效户名暗码
¥conn = new Mongo(mongodb://¥{username}:¥{password}@localhost)
//MongoDB有效户名暗码并指定命据库blog
¥conn = new Mongo(mongodb://¥{username}:¥{password}@localhost/blog);
//多个办事器
¥conn = new Mongo(mongodb://localhost:27017,localhost:27018);
?>
2、指定命据库和数据集名(表名)
view plaincopy to clipboardprint?
<?php
//选择数据库blog
¥db = ¥conn->blog;
//制订成果集(表名:users)¥collection = ¥db->users;
我们永远不要期待别人的拯救,只有自己才能升华自己。自己已准备好了多少容量,方能吸引对等的人与我们相遇,否则再美好的人出现、再动人的事情降临身边,我们也没有能量去理解与珍惜,终将擦肩而过。—— 姚谦《品味》
?>
<?php
//选择数据库blog
¥db = ¥conn->blog;
//制订成果集(表名:users)
¥collection = ¥db->users;
?>
3、CRUD
view plaincopy to clipboardprint?
<?php
//新增
¥user = array(name => caleng, email =>admin@admin.com);
¥collection->(¥user);
//批改
¥newdata = array(¥set => array(email => test@test.com));
¥collection->(array(name => caleng), ¥newdata);
//删除
¥collection->remove(array(name=>caleng), array(justOne => true));
//查找
¥cursor = ¥collection->find();
var_dump(¥cursor);
//查找一条
¥user = ¥collection->findOne(array(name => caleng), array(email));
var_dump(¥user);
?>
<?php
//新增
¥user = array(name => caleng, email =>admin@admin.com);
¥collection->(¥user);
//批改
¥newdata = array(¥set => array(email => test@test.com));
¥collection->(array(name => caleng), ¥newdata);
//删除
¥collection->remove(array(name=>caleng), array(justOne => true));
//查找
¥cursor = ¥collection->find();
var_dump(¥cursor);
//查找一条
¥user = ¥collection->findOne(array(name => caleng), array(email));
var_dump(¥user);
?>
4、封闭连接
view plaincopy to clipboardprint?
<?php
¥conn->close();
?>