當 PHP 遇上 MongoDB

來源:互聯網
上載者:User

標籤:style   blog   http   io   ar   color   os   使用   sp   

  FROM:http://www.cstor.cn/textdetail_7995.html

  之前筆者出了一篇文章是教大家在 Linux 下安裝 MongoDB,並且透過 Mongo Client 操作資料庫 (Console Interface),但實際應用上最常搭配 Web 或 WebService 進行實作。接下來我們要介紹如何在 PHP 中操作 MongoDB。這裡一樣介紹 CentOS 的安裝方式,首先透過 EPEL 安裝 PHP Mongo Driver,請執行以下命令安裝: 

  sudo yum install php-pecl-mongo 

  啟動 Mongo DB Server: 

  sudo service mongod start 

  寫一支 PHP 透過 MongoClient 類別來存取資料庫 (官方教學檔案使用的 Mongo 類別已經廢止),程式碼如下: 

   
  

// Configuration   $dbhost = ‘localhost‘;   $dbname = ‘my_mongodb‘;   // Connect to mongo database   $mongoClient = new \MongoClient(‘mongodb://’ . $dbhost);   $db = $mongoClient->$dbname;   // Get the users collection   $cUsers = $db->users;   // Insert object   $user = array(   ‘first_name’ => ‘SJ’,   ‘last_name’ => ‘Mongo’,   ‘roles’ => array(‘developer’,’bugmaker’)   );   // Insert this new document into the users collection   $cUsers->save($user);   // Query   $user = array(   ‘first_name’ => ‘SJ’,   ‘last_name’ => ‘Mongo’   );   $user = $cUsers->findOne($user);   // output   print_r($user); 
View Code

 



  執行結果如下: 

 

 1  Array  2  3   (  4  5   [_id] => MongoId Object  6  7   (  8  9   [$id] => 53de543d58b420881b998c8b 10 11   ) 12 13   [first_name] => SJ 14 15   [last_name] => Mongo 16 17   [roles] => Array 18 19   ( 20 21   [0] => developer 22 23   [1] => bugmaker 24 25   ) 26 27   ) 
View Code

 


  上述的動作會直接操作 my_mongodb 資料庫,建立一個名為 users 的 Collection 並且新增一個物件,整個過程不需要事先建立資料庫與 Schema,是不是很簡單快速呢!?執行完成後我們也可以在 /var/lib/mongodb/ 目錄中看見 my_mongodb.0~1 等檔案,表示我們的資料已經建立。 

  可是過程我們發現一件事情,整個 MongoDB 連線動作竟然沒有驗證!沒錯,預設 MongoDB 啟用確實是無敵狀態,接下來我們介紹如何啟用帳密連線驗證。 

  開啟你的 MongoDB 連線驗證 

  第一步先透過 mongo 命令,在 admin 資料庫中建立欲連線的帳號密碼 = mongo 

  MongoDB 管理者需在 admin 資料庫中建立使用者,因此我們執行以下 Query: 

  use admin; 

  db.addUser(‘sj’, ‘my-password’); 

  exit; 

  第二步修改 /etc/mongodb.conf 設定檔,開啟「auth = true」啟用驗證程式 

  sudo vim /etc/mongodb.conf 

  重新啟用 MongoDB 服務 

  sudo service mongod restart 

  接著我們就可以透過 mongo 命令設定 my_mongodb 的連線使用者,如下: 

  use admin; 

  db.auth(‘sj’, ‘my-password’); 

  use my_mongodb; 

  db.addUser(‘sj’, ‘my-password’); 

  exit; 

  上述我們透過 db.auth 進行登入,由於已經啟用認證,必須登入後才可以操作資料庫。 

  接著我們將 PHP 修改為以下,加入 MongoDB 連線的帳號與密碼: 

   
 

 1  // Configuration  2  3   $dbhost = ‘localhost‘;  4  5   $dbname = ‘my_mongodb‘;  6  7   // Connect to mongo database  8  9   $mongoClient = new \MongoClient( 10 11   ‘mongodb://’ . $dbhost, 12 13   array( 14 15   ‘db’ => $dbname, 16 17   ‘username’ => ‘sj’, 18 19   ‘password’ => ‘my-password’ 20 21   ) 22 23   ); 24 25   $db = $mongoClient->$dbname; 26 27   // Get the users collection 28 29   $cUsers = $db->users; 30 31   // Query 32 33   $user = array( 34 35   ‘first_name’ => ‘SJ’, 36 37   ‘last_name’ => ‘Mongo’ 38 39   ); 40 41   $user = $cUsers->findOne($user); 42 43   // output 44 45   print_r($user); 
View Code

 



  如此就可以透過帳密與 MongoDB 正確進行連線羅,介紹到此,下次再見。

當 PHP 遇上 MongoDB

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.