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); 

  执行结果如下: 

 

  Array 

   ( 

   [_id] => MongoId Object 

   ( 

   [$id] => 53de543d58b420881b998c8b 

   ) 

   [first_name] => SJ 

   [last_name] => Mongo 

   [roles] => Array 

   ( 

   [0] => developer 

   [1] => bugmaker 

   ) 

   ) 

  上述的动作会直接操作 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 连线的帐号与密码:

   
 

  // Configuration 

   $dbhost = ‘localhost'; 

   $dbname = ‘my_mongodb'; 

   // Connect to mongo database 

   $mongoClient = new \MongoClient( 

   ‘mongodb://’ . $dbhost, 

   array( 

   ‘db’ => $dbname, 

   ‘username’ => ‘sj’, 

   ‘password’ => ‘my-password’ 

   ) 

   ); 

   $db = $mongoClient->$dbname; 

   // Get the users collection 

   $cUsers = $db->users; 

   // Query 

   $user = array( 

   ‘first_name’ => ‘SJ’, 

   ‘last_name’ => ‘Mongo’ 

   ); 

   $user = $cUsers->findOne($user); 

   // output 

   print_r($user); 

  如此就可以透过帐密与 MongoDB 正确进行连线罗,介绍到此,下次再见。

当 PHP 遇上 MongoDB的更多相关文章

  1. MVC遇上bootstrap后的ajax表单模型验证

    MVC遇上bootstrap后的ajax表单验证 使用bootstrap后他由他自带的样式has-error,想要使用它就会比较麻烦,往常使用jqueyr.validate的话只有使用他自己的样式了, ...

  2. 敏捷遇上UML-需求分析及软件设计最佳实践(郑州站 2014-6-7)

      邀请函: 尊敬的阁下:我们将在郑州为您奉献高端知识大餐,当敏捷遇上UML,会发生怎样的化学作用呢?首席专家张老师将会为您分享需求分析及软件设计方面的最佳实践,帮助您掌握敏捷.UML及两者相结合的实 ...

  3. 敏捷遇上UML—软创基地马年大会(广州站 2014-4-19)

        我们将在广州为您奉献高端知识大餐,当敏捷遇上UML,会发生怎样的化学作用呢?首席专家张老师将会为您分享需求分析及软件设计方面的最佳实践,帮助您掌握敏捷.UML及两者相结合的实战技巧. 时间:2 ...

  4. 敏捷遇上UML——软创基地马年大会(深圳站 2014-3-15)

    邀请函: 尊敬的阁下: 我们将在深圳为您奉献高端知识大餐,当敏捷遇上UML,会发生怎样的化学作用呢?首席专家张老师将会为您分享需求分析及软件设计方面的最佳实践,帮助您掌握敏捷.UML及两者相结合的实战 ...

  5. 初识genymotion安装遇上的VirtualBox问题

    想必做过Android开发的都讨厌那慢如蜗牛的 eclipse原生Android模拟器吧! 光是启动这个模拟器都得花上两三分钟,慢慢的用起来手机来调试,但那毕竟不是长久之计,也确实不方便,后来知道了g ...

  6. 线上mongodb数据库mLab使用总结

    最近在CNode社区看到有人分享了免费的线上mongodb数据库(容量500M),今天去注册了一下,成功的将线下数据库替换掉了,现在就说一下它的使用和配置需要注意的地方: mLab是一款免费的在线mo ...

  7. SQL SERVER 2008 R2 SP1更新时,遇上共享功能更新失败解决方案

    SQL SERVER 2008 R2 SP1更新时,遇上共享功能更新失败的问题,可作如下尝试: 更新失败后,在windows的[事件查看器→应用程序]中找到来源为MsiInstaller,事件ID为1 ...

  8. 当创业遇上O2O,新一批死亡名单,看完震惊了!

    当创业遇上O2O,故事就开始了,总投入1.6亿.半年开7家便利店.会员猛增至10万……2015半年过去后,很多故事在后面变成了一场创业“事故”,是模式错误还是烧钱过度?这些项目的失败能给国内创业者带来 ...

  9. LoadRunner - 当DiscuzNT遇上了Loadrunner(下) (转发)

    当DiscuzNT遇上了Loadrunner(下) 在之前的两篇文章中,基本上介绍了如何录制脚本和生成并发用户,同时还对测试报告中的几个图表做了简单的说明.今天这篇文章做为这个系列的最后一篇,将会介绍 ...

随机推荐

  1. Floyd算法 - 最短路径

    2017-07-27 22:21:04 writer:pprp 该算法的本质是动态规划,形式简单,复杂度高为O(n^3): d[i][j] = max(d[i][k]+d[k][j],d[i][j]) ...

  2. 新东方雅思词汇---8.3、apt

    新东方雅思词汇---8.3.apt 一.总结 一句话总结:本身为词根 adj. 恰当的:有…倾向的:灵敏的 本身为词根 英 [æpt]  美 [æpt]  adj. 恰当的:有…倾向的:灵敏的 n. ...

  3. ToggleButton开关状态按钮控件

    ToggleButton开关状态按钮控件 一.简介 1. 2.ToggleButton类结构 父类是CompoundButton,引包的时候注意下 二.ToggleButton开关状态按钮控件使用方法 ...

  4. MVVM4

    原地址(内容更丰富):http://www.cnblogs.com/888h/category/269092.html MVVM架构的简单解析   图1 View.ViewModel.Model之间的 ...

  5. pip使用国内镜像解决安装超时

    刚刚用pip install pipenv时,发现抛出一个超时的问题 这是从files.pythonhosted.org去下载的,国内的网访问时慢的出奇,然后就会出现超时的情况.这时候,可以使用国内镜 ...

  6. 三 web爬虫,scrapy模块介绍与使用

    Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以 ...

  7. mybatis 批量修改接口的几种实现方式

    -----------------我也是有上线的--------------我也是有上线的------------我也是有上线的---------------我也是有上线的-------------- ...

  8. Gradle 一(Android)

    参考一:Gradle 完整指南(Android) 参考二:深入理解Android(一):Gradle详解 参考三:Gradle for Android 第一篇( 从 Gradle 和 AS 开始 ) ...

  9. MySQL 实践

    一.下载MySQL 1.mysql-noinstall-5.1.73-win32.zip 2.mysql-connector-net-6.8.3.msi 二.安装MySQL 三.连接MySQL 1.A ...

  10. JavaScript高级程序设计读后感(一)

    一.什么是JavaScript? 本质? 历史? 表单验证发展成为一门语言 局限性?