欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP对MongoDB[NoSQL]数据库的操作

程序员文章站 2023-09-08 11:33:27
一、mongodb简介 mongodb (名称来自"humongous") 是一个可扩展的、高性能、开源、模式*、面向文档的数据库,集文档数据库、键值对存储和关系型数据...

一、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://www.php.net/manual/en/mongo.installation.php#mongo.installation.windows,提示:
1、vc6适合apache、vc9适合iis;
2、thread safe适合php以模块运行方式、non-thread safe适合cgi运行方式。
修改php.ini,加入:extension=php_mongo.dll,重启web服务器。
四、php示例
1、连接mongo服务器

复制代码 代码如下:

<?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、指定数据库和数据集名(表名)
复制代码 代码如下:

<?php 
//选择数据库blog 
$db = $conn->blog; 
//制定结果集(表名:users)

$collection = $db->users; 
?>
3、crud
<?php 
//新增 
$user = array('name' => 'caleng', 'email' => 'admin@admin.com'); 
$collection->insert($user); 
//修改 
$newdata = array('$set' => array("email" => "test@test.com")); 
$collection->update(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、关闭连接
<?php 
$conn->close(); 
?>