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初学者头疼问题总结
Jul 08 PHP
建立动态的WML站点(二)
Oct 09 PHP
使用 eAccelerator加速PHP代码的目的
Mar 16 PHP
用C/C++扩展你的PHP 为你的php增加功能
Sep 06 PHP
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
Jun 06 PHP
php发送get、post请求的6种方法简明总结
Jul 08 PHP
php中通过DirectoryIterator删除整个目录的方法
Mar 13 PHP
分享微信扫码支付开发遇到问题及解决方案-附Ecshop微信支付插件
Aug 23 PHP
PHP数组去重比较快的实现方式
Jan 19 PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 PHP
PHP格式化显示时间date()函数代码
Oct 03 PHP
PHP通过GD库实现验证码功能示例
Feb 23 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
PHP中批量生成静态html(命令行下运行PHP)
2014/04/19 PHP
一个经典的PHP文件上传类分享
2014/11/18 PHP
PHP开发中AJAX技术的简单应用
2015/12/11 PHP
cakephp2.X多表联合查询join及使用分页查询的方法
2017/02/23 PHP
laravel admin实现分类树/模型树的示例代码
2020/06/10 PHP
Js与下拉列表处理问题解决
2014/02/13 Javascript
jquery序列化表单以及回调函数的使用示例
2014/07/02 Javascript
JS实现鼠标经过好友列表中的好友头像时显示资料卡的效果
2014/07/02 Javascript
JavaScript 数组some()和filter()的用法及区别
2016/05/20 Javascript
jQuery多个版本和其他js库冲突的解决方法
2016/08/11 Javascript
jQuery插件ContextMenu自定义图标
2017/03/15 Javascript
jQuery实现列表的增加和删除功能
2018/06/14 jQuery
JavaScript实现构造json数组的方法分析
2018/08/17 Javascript
详解Vue.directive 自定义指令
2019/03/27 Javascript
简单了解JavaScript sort方法
2019/11/25 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
原生javascript的ajax请求及后台PHP响应操作示例
2020/02/24 Javascript
JavaScript交换变量的常用方法小结【4种方法】
2020/05/07 Javascript
[10:18]2018DOTA2国际邀请赛寻真——Fnatic能否笑到最后?
2018/08/14 DOTA
Python基于scrapy采集数据时使用代理服务器的方法
2015/04/16 Python
Python实现单词翻译功能
2017/06/06 Python
ubuntu中配置pyqt4环境教程
2017/12/27 Python
Django中针对基于类的视图添加csrf_exempt实例代码
2018/02/11 Python
基于OpenCV python3实现证件照换背景的方法
2019/03/22 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
基于keras 模型、结构、权重保存的实现
2020/01/24 Python
Python selenium如何打包静态网页并下载
2020/08/12 Python
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
Fossil美国官网:Fossil手表、手袋、珠宝及配件
2017/02/01 全球购物
婴儿地球:Baby Earth
2018/12/25 全球购物
亚洲领先的设计购物网站:Pinkoi
2020/11/26 全球购物
九一八事变演讲稿
2014/09/05 职场文书
调解书格式范本
2015/05/20 职场文书
公司劳动纪律管理制度
2015/08/04 职场文书
利用python进行数据加载
2021/06/20 Python