首先得安装好PHP和MongoDB,此处不在介绍,读者可参考其他资料。
我电脑上安装的是mongodb-linux-i686-2.6.4、php-5.2.6和mongo-1.5.5。
下载phpmongodb扩展源码,源码包可以在
http://pecl.php.net/package/mongo 下载
//解压
[root@localhost src]# tar -zxvfmongo-1.5.5.tgz
//准备编译扩展环境
[root@localhost src]#/usr/local/php/bin/phpize
打模块
[root@localhost src]# cd mongo-1.5.5
[root@localhost mongo-1.5.5]# ./configure--with-php-config=/usr/local/php/bin/php-config --enable-mongo
[root@localhost mongo-1.5.5]# make&& make install
//查看mongo.so
ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/
配置php
[root@localhost mongo-1.5.5]# vim/usr/local/php/etc/php.ini
//添加
extension=mongo.so
将extension_dir设置为/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/
//重启Apache
[root@localhostmongo-1.5.5]# /usr/local/apache2/bin/apachectl restart
测试mongo模块
//编辑测试文件
[root@localhostmongo-1.5.5]# vim /usr/local/apache2/htdocs/phpinfo.php
内容如下:
<?php
phpinfo();
?>
启动浏览器访问localhost/phpinfo.php。页面中有mongo这张表即为安装成功
以用户授权的方式来启动MongoDB
[root@localhostbin]# ./mongod --auth --dbpath=/usr/local/mongodb/data/--logpath=/usr/local/mongodb/dblogs –fork
设置超级管理员
[root@localhostbin]# ./mongo
> use admin
>db.addUser("root","123456");
> exit
以超级管理员登录,admin的管理员只能通过admin验证登录
[root@localhostbin]# ./mongo -uroot -p123456 localhost:27017/admin
//添加授权用户
> use test
>db.addUser("user1","123456")
//查看当前用户,需切换到admin
>use admin
>db.system.users.find()
>退出
//用user1登录test,此时只能操作test数据库
[root@localhostbin]# ./mongo -uuser1 -p123456 localhost:27017/test
//插入简单测试数据
>db.c1.insert({name:"user1"})
>db.c1.insert({name:"user2"})
>db.c1.insert({name:"user3"})
>db.c1.insert({name:"user4"})
>db.c1.find()
在php的mongo扩展中,提供了4类接口(对象)
1、 针对MongoDB连接的操作:Mongo
2、 针对MongoDB中数据库的操作:MongoDB
3、 针对MongoDB中collection的操作:MongoCollection
4、 针对查询结果集的操作:MongoCursor
以下是数据库操作示例
[root@localhostbin]# cd /usr/local/apache2/htdocs/
连接数据库的公共文件conn.php
<?php
$conn = newMongo("mongodb://user1:123456@localhost:27017/test");
$db = $conn->test;
?>
查看数据库的文件find.php
<?php
include "conn.php";
$c1=$db->c1;
//
// db.c1.find({name:"user1"})
// {name:"user1"} ==array("name"=>"user1")
// [1,2] == array(1,2)
//
$arr = array();
$rst = $c1->find($arr);
foreach($rst as $val)
{
echo "<pre>";
$fid = $val['_id'];
$user = $val['name'];
echo "<a href ='user.php?fid={$fid}'>{$user}</a>";
echo "<hr>";
}
?>
用户详细信息文件user.php
<?php
include "conn.php";
$c1 = $db->c1;
$oid = new MongoId($_GET['fid']);
$arr = array("_id"=>$oid);
$rst = $c1->find($arr);
foreach($rst as $val)
{
echo "<pre>";
print_r($val);
echo "<pre>";
}
?>
添加用户的文件insert.php
<?php
include "conn.php";
$c1 = $db->c1;
//db.c1.insert({name:"user6",age:20,sex:"Male"})
$arr =array("name"=>"user6","age"=>20,"sex"=>"Male");
if($c1->insert($arr))
{
echo "<script>location='find.php'</script>";
}
else
{
echo "data insert failed!";
}
?>
删除用户的文件delete.php
<?php
include "conn.php";
$c1 = $db->c1;
//db.c1.remove({name:"user6"})
$arr =array("name"=>"user6");
if($c1->remove($arr))
{
echo"<script>location='find.php'</script>";
}
else
{
echo "delete failed!";
}
?>
更新数据库的文件update.php
<?php
include "conn.php";
$c1 = $db->c1;
//db.c1.update({name:"user1"},{$set:{age:80,sex:"Female"}})
$sarr = array('name'=>'user1');
$darr =array('$set'=>array('age'=>80,'sex'=>'Female'));
$opts =array('upsert'=>0,'multiplr'=>1);
if($c1->update($sarr,$darr,$opts))
{
echo"<script>location='find.php'</script>";
}
else
{
echo "update failed!";
}
?>
关闭连接
<?php
$conn->close();
?>