PHP与MongoDB简介|安全|M+PHP应用实例详解


Posted in PHP onJune 17, 2013

一、MongoDB简介
MongoDB (名称来自"humongous") 是一个可扩展的、高性能、开源、模式自由、面向文档的数据库,集文档数据库、键值对存储和关系型数据库的优点于一身。官方站点:http://www.mongodb.org/,MongoDB特点:

•面向文档存储(类JSON数据模式简单而强大)
•动态查询
•全索引支持,扩展到内部对象和内嵌数组
•查询记录分析
•快速,就地更新
•高效存储二进制大对象 (比如照片和视频)
•复制和故障切换支持
•Auto-Sharding自动分片支持云级扩展性
•MapReduce 支持复杂聚合
•商业支持,培训和咨询

二、安装MongoDB
安装MongoDB非常的简单,仅需下载压缩包解压运行命令即可,下载地址:http://www.mongodb.org/downloads, 本文为windows平台,MongoDB运行命令:>bin/mongod。提示:首先要创建存储数据的文件夹,MongoDB 默认存储数据目录为 /data/db/ (或者 c:\data\db),当然你也可以修改成不同目录,只需要指定 --dbpath 参数,eg:
>bin/mongod --dbpath=d:\mgdata\db

三、安装MongoDB PHP扩展
根据自己的PHP版本下载PHP扩展:http://github.com/mongodb/mongo-php-driver/downloads,提示:
1、VC6适合Apache、VC9适合IIS;
2、Thread safe适合PHP以模块运行方式、Non-thread safe适合CGI运行方式。
修改php.ini,加入:extension=php_mongo.dll,重启Web服务器。

四、PHP测试与MongoDB的相关示例
1、连接Mongo服务器

<?php 
//连接localhost:27017 
$conn = new Mongo(); 
//连接远程主机默认端口 
$conn = new Mongo('test.com'); 
//连接远程主机22011端口 
$conn = new Mongo('test.com:22011'); 
//MongoDB有用户名密码 
$conn = new Mongo("mongodb://${username}:${password}@localhost") 
//MongoDB有用户名密码并指定数据库blog 
$conn = new Mongo("mongodb://${username}:${password}@localhost/blog"); 
//多个服务器 
$conn = new Mongo("mongodb://localhost:27017,localhost:27018"); 
?>

<?php 
//连接localhost:27017 
$conn = new Mongo(); 
//连接远程主机默认端口 
$conn = new Mongo('test.com'); 
//连接远程主机22011端口 
$conn = new Mongo('test.com:22011'); 
//MongoDB有用户名密码 
$conn = new Mongo("mongodb://${username}:${password}@localhost") 
//MongoDB有用户名密码并指定数据库blog 
$conn = new Mongo("mongodb://${username}:${password}@localhost/blog"); 
//多个服务器 
$conn = new Mongo("mongodb://localhost:27017,localhost:27018"); 
?>

2、指定数据库和数据集名(表名)
<?php 
//选择数据库blog 
$db = $conn->blog; 
//制定结果集(表名:users) 
$collection = $db->users; 
?>

<?php 
//选择数据库blog 
$db = $conn->blog; 
//制定结果集(表名:users) 
$collection = $db->users; 
?>

3、CRUD
<?php 
//新增 
$user = array('name' => 'caleng', 'email' => 'admin@admin.com'); 
$collection->insert($user); 
//修改 
$newdata = array('$set' => array("email" => "test@test.com")); 
$collection->update(array("name" => "caleng"), $newdata); 
//删除 
$collection->remove(array('name'=>'caleng'), array("justOne" => true)); 
//查找 
$cursor = $collection->find(); 
var_dump($cursor); 
//查找一条 
$user = $collection->findOne(array('name' => 'caleng'), array('email')); 
var_dump($user); 
?>

<?php 
//新增 
$user = array('name' => 'caleng', 'email' => 'admin@admin.com'); 
$collection->insert($user); 
//修改 
$newdata = array('$set' => array("email" => "test@test.com")); 
$collection->update(array("name" => "caleng"), $newdata); 
//删除 
$collection->remove(array('name'=>'caleng'), array("justOne" => true)); 
//查找 
$cursor = $collection->find(); 
var_dump($cursor); 
//查找一条 
$user = $collection->findOne(array('name' => 'caleng'), array('email')); 
var_dump($user); 
?>

4、关闭连接
<?php 
$conn->close(); 
?>
PHP 相关文章推荐
php格式化工具Beautify PHP小小BUG
Apr 24 PHP
PHP读取XML值的代码(推荐)
Jan 01 PHP
深入解析PHP内存管理之谁动了我的内存
Jun 20 PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
Jan 22 PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
May 10 PHP
php代码检查代理ip的有效性
Aug 19 PHP
中高级PHP程序员应该掌握哪些技术?
Sep 23 PHP
php + nginx项目中的权限详解
May 23 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
Feb 08 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
Mar 28 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 PHP
PHP正则表达式之RCEService回溯
Apr 11 PHP
php.ini修改php上传文件大小限制的方法详解
Jun 17 #PHP
php 模拟POST提交的2种方法详解
Jun 17 #PHP
PHP的curl实现get,post和cookie(实例介绍)
Jun 17 #PHP
ThinkPHP的RBAC(基于角色权限控制)深入解析
Jun 17 #PHP
深入PHP curl参数的详解
Jun 17 #PHP
解析php curl_setopt 函数的相关应用及介绍
Jun 17 #PHP
PHP中array_merge和array相加的区别分析
Jun 17 #PHP
You might like
据说是雅虎的一份PHP面试题附答案
2009/01/07 PHP
php 团购折扣计算公式
2011/11/24 PHP
PHP批量检测并去除文件BOM头代码实例
2014/05/08 PHP
PHP中使用Memache作为进程锁的操作类分享
2015/03/30 PHP
Joomla数据库操作之JFactory::getDBO用法
2016/05/05 PHP
javascript中的new使用
2010/03/20 Javascript
纯CSS3代码实现滑动开关效果
2015/08/19 Javascript
JS+CSS实现经典的左侧竖向滑动菜单效果
2015/09/23 Javascript
微信小程序 条件渲染详解
2016/10/09 Javascript
JS中如何实现复选框全选功能
2016/12/19 Javascript
jQuery异步提交表单实例
2017/05/30 jQuery
vue组件间通信子与父详解(二)
2017/11/07 Javascript
Iview Table组件中各种组件扩展的使用
2018/10/20 Javascript
vue.js实现的全选与全不选功能示例【基于elementui】
2018/12/03 Javascript
js 将线性数据转为树形的示例代码
2019/05/28 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
2019/06/20 Javascript
json字符串对象转换代码实例
2019/09/28 Javascript
[03:40]DOTA2英雄梦之声_第01期_炼金术士
2014/06/23 DOTA
Python基本数据类型详细介绍
2014/03/11 Python
python正常时间和unix时间戳相互转换的方法
2015/04/23 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
2018/04/18 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
python使用opencv在Windows下调用摄像头实现解析
2019/11/26 Python
Python-opencv 双线性插值实例
2020/01/17 Python
使用Python实现牛顿法求极值
2020/02/10 Python
使用Keras 实现查看model weights .h5 文件的内容
2020/06/09 Python
html5理解head_动力节点Java学院整理
2017/07/13 HTML / CSS
Old Navy加拿大官网:美式休闲服饰品牌
2017/09/26 全球购物
英国马莎百货印度官网:Marks & Spencer印度
2020/10/08 全球购物
四种会话跟踪技术
2015/05/20 面试题
商场促销活动方案
2014/02/08 职场文书
小学生开学第一课活动方案
2014/03/27 职场文书
学校师德承诺书
2014/05/23 职场文书
群众路线教育实践活动调研报告
2014/11/03 职场文书
煤矿安全生产管理协议书
2016/03/22 职场文书
Vue全局事件总线你了解吗
2022/02/24 Vue.js