当 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);
执行结果如下:
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 )
上述的动作会直接操作 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);
如此就可以透过帐密与 MongoDB 正确进行连线罗,介绍到此,下次再见。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。