zoukankan      html  css  js  c++  java
  • 当 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 正确进行连线罗,介绍到此,下次再见。

  • 相关阅读:
    Java小案例——对字符串进行加密解密
    Java基础——使用三元运算符判断一个数的奇偶性
    Java基础——字母大小写转换
    多线程实现——新龟兔赛跑
    编程面试题之——简答题(持续更新...)
    多线程之——共享数据
    多线程之——线程的状态
    Android 8.0 Oreo介绍
    Android 7.0 Nougat介绍
    Android 6.0 Marshmallow介绍
  • 原文地址:https://www.cnblogs.com/wq920/p/4146045.html
Copyright © 2011-2022 走看看