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. 防盗链&CSRF&API接口幂等性设计

    防盗链技术 CSRF(模拟请求) 分析防止伪造Token请求攻击 互联网API接口幂等性设计 忘记密码漏洞分析 1.Http请求防盗链 什么是防盗链 比如A网站有一张图片,被B网站直接通过img标签属 ...

  2. 使用Idea 配置maven

    使用Idea 配置maven 使用idea 配置maven有4步: (1)下载Idea,maven (2)安装idea, (3)设置maven的环境变量, (4)具体的配置过程 当前环境: 操作系统: ...

  3. 八步学会数据迁移:ETL工具kettle使用方法

    一.目的 将不同服务器上的表合并到另外一个服务器上.例如:将服务器1上的表A和服务器2上的表B,合并到服务器3上的表C 要求:表A需要被裁剪(去掉不必要的字段).表B需要增加一些字段 二.使用方法 ( ...

  4. 有谁知道什么工具测试IOS手机上APP的性能软件啊?

    有谁知道什么工具测试IOS手机上APP的性能软件啊?

  5. Dev控件-gridview的属性说明

    说明 Options OptionsBehavior 视图的行为选项 AllowIncrementalSearch 允许用户通过输入想得到的列值来定位行 AllowPartialRedrawOnScr ...

  6. Java中的equals学习小结

    Java中的equals是十分重要的,和= =要区别开来,现在小结其主要内容,而且要将 = =和 equals列为重要的对比概念来学习 1.声明格式    public  boolean equals ...

  7. NumPy数学算数函数

    NumPy - 算数函数 很容易理解的是,NumPy 包含大量的各种数学运算功能. NumPy 提供标准的三角函数,算术运算的函数,复数处理函数等. 三角函数 NumPy 拥有标准的三角函数,它为弧度 ...

  8. NumPy排序、搜索和计数函数

    NumPy - 排序.搜索和计数函数 NumPy中提供了各种排序相关功能. 这些排序函数实现不同的排序算法,每个排序算法的特征在于执行速度,最坏情况性能,所需的工作空间和算法的稳定性. 下表显示了三种 ...

  9. 为什么Kubernetes不使用libnetwork

    Kubernetes 在 1.0 版本之前就已经有了最初的网络插件.与此同时 Docker 也引入了 libnetwork 和 Container Network Model (CNM).现在 Doc ...

  10. 装饰类——wpf

    decorator:在元素“周围”设置外边框.背景或者二者. adorner:在已存在的Visual  “之上”叠加Visual. AdornerDecorator:为可视化树中其下面的元素提供一个装 ...