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 相关文章推荐
excellent!――ASCII Art(由目标图象生成ascii)
Feb 20 PHP
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
Mar 01 PHP
基于PHP 面向对象之成员方法详解
May 04 PHP
PHP数据过滤的方法
Oct 30 PHP
php截取字符串之截取utf8或gbk编码的中英文字符串示例
Mar 12 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
Apr 14 PHP
php中二维数组排序问题方法详解
Aug 28 PHP
总结的一些PHP开发中的tips(必看篇)
Mar 24 PHP
详解php中serialize()和unserialize()函数
Jul 08 PHP
PHP PDOStatement::columnCount讲解
Jan 30 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
May 29 PHP
php去除deprecated的实例方法
Nov 17 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
一个显示天气预报的程序
2006/10/09 PHP
生成sessionid和随机密码的例子
2006/10/09 PHP
新页面打开实际尺寸的图片
2006/08/25 Javascript
Firefox getBoxObjectFor getBoundingClientRect联系
2008/10/26 Javascript
利用JS重写Cognos右键菜单的实现代码
2010/04/11 Javascript
如何确保JavaScript的执行顺序 之jQuery.html并非万能钥匙
2011/03/03 Javascript
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
js控制frameSet示例
2013/09/10 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
JS对img标签进行优化使用onerror显示默认图像
2014/04/24 Javascript
js倒计时简单实现方法
2015/12/17 Javascript
简单模拟node.js中require的加载机制
2016/10/27 Javascript
本地Bootstrap文件字体图标引入却无法显示问题的解决方法
2020/04/18 Javascript
nodejs处理图片的中间件node-images详解
2017/05/08 NodeJs
JS实现动态给标签控件添加事件的方法示例
2017/05/13 Javascript
Angular 1.x个人使用的经验小结
2017/07/19 Javascript
Windows下Node.js安装及环境配置方法
2017/09/18 Javascript
springmvc接收jquery提交的数组数据代码分享
2017/10/28 jQuery
Nodejs 发布自己的npm包并制作成命令行工具的实例讲解
2018/05/15 NodeJs
angularjs1.5 组件内用函数向外传值的实例
2018/09/30 Javascript
ES10 特性的完整指南小结
2019/03/04 Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
2020/02/27 Javascript
PyQt5主窗口动态加载Widget实例代码
2018/02/07 Python
python调用Matplotlib绘制分布点并且添加标签
2018/05/31 Python
使用Python处理BAM的方法
2018/09/28 Python
浅谈keras使用中val_acc和acc值不同步的思考
2020/06/18 Python
深入了解Python enumerate和zip
2020/07/16 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
蛋白质世界:Protein World
2017/11/23 全球购物
美国打印机墨水和碳粉购物网站:QuikShip Toner
2018/08/29 全球购物
电信专业毕业生推荐信
2013/11/18 职场文书
食品行业求职人的自我评价
2014/01/19 职场文书
发展部经理职责规定
2014/02/22 职场文书
小学生交通安全寄语
2015/02/27 职场文书
2015年挂职锻炼个人总结
2015/10/22 职场文书
dubbo服务整合zipkin详解
2021/07/26 Java/Android