PHP操作MongoDB--学习笔记

首先得安装好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();
?>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值