1. 程式人生 > >PHP安裝和操作MongoDB擴充套件

PHP安裝和操作MongoDB擴充套件

安裝擴充套件

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'上升序的索引
?>

當資料增長時,索引就成了資料庫良好的讀取效能的關鍵.