【mongoDB基礎篇②】PHP-mongo擴展的編譯以及使用

安裝PHP-mongo擴展

安裝php-mongo擴展和安裝其餘php擴展的步驟同樣:php

#1.首先上http://pecl.php.net上面搜索mongo,獲得下載地址
wget http://pecl.php.net/get/mongo-1.6.11.tgz
tar zxvf ./mongo-1.6.11.tgz

#2.解壓進入,phpize後進行編譯
cd ./mongo-1.6.11
phpize #有可能要寫全phpize的地址
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

#3.編譯成功後出現:
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/

#4.得其地址寫入php.ini
extension = mongo.so #有可能要寫全mongo.so的路徑,也就是上面的提示

#5.安裝完之後,看phpinfo()中有沒有這個擴展,有就表示安裝成功;

以上基本上也是其餘PHP擴展安裝的常規方法mongodb

官方的PHP-mongo類使用

通常都是進行二次封裝後再使用,便於後續的擴展;在此以前,咱們先熟悉官方的的使用方法,php官方類使用起來跟其餘擴展的類方法相比略爲特殊數據庫

<?php
# 首先經過MongoClient(Mongo)類來連接mongo的客戶端
# class mongo: This class extends MongoClient and provides access to several deprecated methods. 通常咱們用mongoClient就能夠了

$client = new MongoClient(); // 獲得$client客戶端對象,若是沒有傳入參數,它會鏈接到 "localhost:27017",實際上還能夠傳入參數mongodb://[username:password@]host1[:port1][,host2[:port2:],...]/ 連接多個客戶端,好比連接三個mongos,其中一個崩潰,它會立刻去連接第二個,直到所有連接不上,纔會拋出一個異常 更多constructor參考:http://php.net/manual/zh/mongoclient.construct.php

$db = $client -> shop; //獲取名稱爲shop的數據庫對象,或者使用$db = $m->selectDB("example"),這個時候$db是由class mongoDB來實例的,更多能夠參考http://php.net/manual/zh/class.mongodb.php  

$goods = $db -> goods; //獲得goods集合對象,這個時候的$goods對象是由class MongoCollection類來實例的;

//db.goods.find({},{'_id':0,'goods_id':1,'goods_name':1})
$cursor = $goods -> $goods -> find(array(),array('_id' => 0,'goods_id' => 1,'goods_name' => 1));  //獲得cursor對象,這個時候的cursor對象是由class MongoCursor來實例的

#接下來纔是正式操做mongoDB的數據,把json轉換爲數組既可;
$data = array();
foreach ($cursor as $v) {
  $data[] = $v;
}

#或者
$data = iterator_to_array($cursor); # 內置函數: 將迭代器中的元素拷貝到數組

/**********部分操做示例**********/

$users = $db -> users;

# 返回值
$insert = $users -> insert(array('user_id' => 1,'user_name' => 'zxg','sex' => 'boy'));
/*
  Array
  (
      [ok] => 1 //除非 last_error 自己出現錯誤,不然都是1,表明成功;
      [n] => 0 //受影響的數量,在insert的時候這個值始終是0;
      [err] => null
      [errmsg] => null
  )
 */
 
# 執行js,注意這是class mongoDB類的方法
$response = $db->execute("function(greeting, name) { return greeting+', '+name+'!'; }", array("Good bye", "Joe"));
echo $response['retval']; // Good bye, Joe!
?>

參考

PHP: MongoClient - Manual: http://php.net/manual/zh/class.mongoclient.phpjson

相關文章
相關標籤/搜索