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 相关文章推荐
VML绘图板②脚本--VMLgraph.js、XMLtool.js
Oct 09 PHP
动态网站web开发 PHP、ASP还是ASP.NET
Oct 09 PHP
PHP 读取文件内容代码(txt,js等)
Dec 06 PHP
php快速url重写更新版[需php 5.30以上]
Apr 25 PHP
关于Iframe如何跨域访问Cookie和Session的解决方法
Apr 15 PHP
探讨如何使用SimpleXML函数来加载和解析XML文档
Jun 07 PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
Jul 09 PHP
ThinkPHP表单数据智能写入create方法实例分析
Sep 27 PHP
PHP使用curl制作简易百度搜索
Nov 03 PHP
PHP生成图片缩略图类示例
Jan 12 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
Mar 02 PHP
Laravel5.1框架注册中间件的三种场景详解
Jul 09 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合并数组array_merge函数运算符加号与的区别
2008/10/31 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
PHP设计模式之适配器模式定义与用法详解
2018/04/03 PHP
PHP parse_ini_file函数的应用与扩展操作示例
2019/01/07 PHP
发布一个高效的JavaScript分析、压缩工具 JavaScript Analyser
2007/11/30 Javascript
javaScript函数中执行C#代码中的函数方法总结
2013/08/07 Javascript
javascript自定义的addClass()方法
2014/05/28 Javascript
jQuery实现点击弹出背景变暗遮罩效果实例代码
2016/06/24 Javascript
浅谈js的异步执行
2016/10/18 Javascript
JavaScript监听手机物理返回键的两种解决方法
2017/08/14 Javascript
JavaScript实现带有子菜单和控件的slider轮播图效果
2017/11/01 Javascript
vue单页开发父子组件传值思路详解
2018/05/18 Javascript
微信小程序实现图片上传放大预览删除代码
2020/06/28 Javascript
layerUI下的绑定事件实例代码
2018/08/17 Javascript
JavaScript实现简单轮播图效果
2018/12/01 Javascript
JavaScript多种页面刷新方法小结
2019/04/04 Javascript
浅谈React Native 传参的几种方式(小结)
2019/05/21 Javascript
JavaScript正则表达式验证登录实例
2020/03/18 Javascript
详解JavaScript数据类型和判断方法
2020/09/04 Javascript
[09:23]国际邀请赛采访专栏:iG战队VK,Tongfu战队Cu
2013/08/05 DOTA
python实现360皮肤按钮控件示例
2014/02/21 Python
Python利用pyHook实现监听用户鼠标与键盘事件
2014/08/21 Python
python中map、any、all函数用法分析
2015/04/21 Python
python实现关键词提取的示例讲解
2018/04/28 Python
python实现简单聊天室功能 可以私聊
2019/07/12 Python
什么是python类属性
2020/06/10 Python
PyQt5的相对布局管理的实现
2020/08/07 Python
奥地利汽车配件店:Pkwteile.at
2017/03/10 全球购物
英国美术用品购物网站:Cass Art
2019/10/08 全球购物
下面这个程序执行后会有什么错误或者效果
2014/11/03 面试题
上班玩手机检讨书
2014/02/17 职场文书
五好关工委申报材料
2014/05/31 职场文书
住房租房协议书
2014/08/20 职场文书
校运动会广播稿300字
2014/10/07 职场文书
「我的青春恋爱物语果然有问题。-妄言录-」第20卷封面公开
2022/03/21 日漫
SpringCloud Function SpEL注入漏洞分析及环境搭建
2022/04/08 Java/Android