PHP安装和操作MongoDB扩展

安装扩展

1.下载适合自己PHP版本的PHP扩展
扩展地址:
http://php.net/manual/en/mongo.installation.php#mongo.installation.nix http://www.php.net/manual/en/mongo.installation.php#mongo.installation.windows
2.Thread safe适合PHP模块运行方式、Non-thread safe适合CGI运行方式
3.将php_mongo.dll放入php/ext目录中
4.修改php.ini,加入一行extension=php_mongo.dll,重启web server.

ps:phpStudy默认为CGI模式、wamp默认模块化运行
可以通过php_sapi_name()函数查看当前PHP的运行模式

MongoClient类使用

1.连接mongo数据库服务器(现已不支持Mongo类)

<?php
    $mongo = new MongoClient();                        // 连接localhost:27017
    $mongo = new MongoClient("mongodb://example.com");     // 远程数据库,默认端口
    $mongo = new MongoClient("mongodb://example.com:65432"); // 指定端口号
?>

2.连接一个数据库

<?php
    $mongo = new MongoClient();
    $db = $mongo->dbname;     // 连接数据库名为dbname的数据库
?>

数据库名不用事先创建,当你选择它时,mongodb即可新建一个dbname数据库
当你写错数据库名的时候,会不经意间生成一个数据库,这会导致数据库混乱.

3.连接一个数据库集合

<?php
    $mongo = new MongoClient();
    $db = $mongo->dbname;
    $collection = $db->collectionName;            // 选择一个集合
    $collection = $mongo->dbname->collectionName; // 直接从连接中选择数据库和集合
?>

4.插入一个文档
关联数组是最基本的结构,它保存到集合中.

<?php
    $doc = array(
        "name"  =>  "MongoDB",
        "type"  =>  "database",
        "count" =>  1,
        "info"  =>  (object)array("x"=>203,"y"=>102),
        "versions"  => array("0.9.7","0.9.8","0.9.9")
        );

    $mongo = new MongoClient();
    $collection = $connection->dbname->collectionName;
    $collection->insert($doc);
?>

5.查找一个集合使用MongoCollection::findOne()

<?php
    $mongo = new MongoClient();
    $collection = $mongo->dbname->collectionName;
    $document = $collection->findOne();
    var_dump($document);
?>

这会输出

array(6) {
    ["_id"]=>
    object(MongoId)#8 (1) {
        ["$id"]=>
        string(24) "4e2995576803fab768000000"
    }
    ["name"]=>
        string(7) "MongoDB"
    ["type"]=>
        string(8) "database"
    ["count"]=>
        int(1)
    ["info"]=>
        array(2) {
            ["x"]=>
                int(203)
            ["y"]=>
                int(102)
          }
  ["versions"]=>
      array(3) {
          [0]=>
            string(5) "0.9.7"
          [1]=>
            string(5) "0.9.8"
          [2]=>
            string(5) "0.9.9"
          }
}

6.添加多个文档

<?php
    $mongo = new MongoClient();
    $collection = $connection->dbname->collectionName;
    for($i=0;$i<100;$i++)
    {
        $collection->insert(array('i'=>$i,"field{$i}"=>$i*2));
    }
?>

注意:我们可以插入关键字不同的文档在同一个集合中,这也就是为什么我们称MongoDB是模式自由.

7.统计一个集合中文档数目

<?php
    $mongo = new MongoClient();
    $collection = $mongo->dbname->collectionName;
    echo $collection->count();
?>

8.运用Cursor得到所有的文档

<?php
    $mongo = new MongoClient();
    $collection = $connection->dbname->collectionName;
    $cursor = $collection->find();
    foreach($cursor as $k => $value)
    {
        echo "$k: ";
        var_dump($value);
        echo '<br>';
    }
?>

可以打印出集合中所有的文档
$k是文档的_id字段,$value是文档本身.

9.设置查询标准

<?php
    $mongo = new MongoClient();
    $collection = $mongo->dbname->collectionName;
    $query = array('i'=>71);
    $cursor = $collection->find($query);
    while($cursor->hasNext)
    {
        var_dump($cursor->getNext());
    }
?>

10.查询一系列文档

<?php
    $mongo = new MongoClient();
    $collection = $mongo->dbname->collectionName;
    <span style="white-space:pre"></span>
    $query = array('i'=>array('$gt'=>50));
    // $query = array('i'=>array('$gt'=>20,"\$lte"=>30)) // 20<i<=30
    $cursor = $collection->find($query);
    while($cursor->hasNext())
    {
        var_dump($cursor->getNext());
    }
?>

注意:单引号下$字符不需要转义,但是双引号下需要转义
$ne 查询所有不等于该元素的数据
$nin 查询不在范围内的所有数据

11.创建一个索引

<?php
    $mongo = new MongoClient();
    $collection = $mongo->dbname->collectionName;
    $collection = ensureIndex(array("i"=>1)); // 创建一个在'i'上升序的索引
    $collection->ensureIndex(array('i'=>-1,'j'=>1)) // 创建一个在'i'上降序,在'j'上升序的索引
?>

当数据增长时,索引就成了数据库良好的读取性能的关键.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值