当 PHP 遇上 MongoDB

  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 正确进行连线罗,介绍到此,下次再见。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。