当前位置: 首页 > HTML5培训 > 前端开发 > HTML5 > PHP操作MongoDB数据库及和MySQL数据库的对比
PHP操作MongoDB数据库及和MySQL数据库的对比 时间:2018-08-10     来源:未知

MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库。它们各有各的优点,关键是看用在什么地方。所以我们所熟知的那些SQL(全称Structured Query Language)语句就不适用于MongoDB了,因为SQL语句是关系型数据库的标准语言。

我们在开发过程中,经常使用PHP来操作MySQL数据库,那么如何使用PHP来操作MongoDB数据库呢?下面来着重介绍MongoDB数据库及PHP操作MongoDB数据库。

一、MongoDB简介

MongoDB (名称来自”humongous”) 是一个可扩展的、高性能、开源、模式自由、面向文档的数据库,集文档数据库、键值对存储和关系型数据库的优点于一身。

MongoDB特点:

• 面向文档存储(类JSON数据模式简单而强大)

• 动态查询

• 全索引支持,扩展到内部对象和内嵌数组

• 查询记录分析

• 快速,就地更新

• 高效存储二进制大对象 (比如照片和视频)

• 复制和故障切换支持

• Auto-Sharding自动分片支持云级扩展性

• MapReduce 支持复杂聚合

• 商业支持,培训和咨询

二、安装MongoDB

安装MongoDB非常的简单,仅需下载压缩包解压运行命令即可

下载地址: https://www.mongodb.org/downloads

本文为windows平台,MongoDB运行命令:>bin/mongod

提示:首先要创建存储数据的文件夹,MongoDB 默认存储数据目录为 /data/db/ (或者 c:\data\db),当然你也可以修改成不同目录,只需要指定 –dbpath 参数。

三、安装MongoDB PHP扩展

根据自己的PHP版本下载PHP扩展:

//php.net/manual/en/mongo.installation.php#mongo.installation.nix

//www.php.net/manual/en/mongo.installation.php#mongo.installation.windows

提示:

1、VC6适合Apache、VC9适合IIS;

2、Thread safe适合PHP以模块运行方式、Non-thread safe适合CGI运行方式。修改php.ini,加入:extension=php_mongo.dll,重启Web服务器。

Ubuntu安装步骤:

1. 下载插件: mongo-php-driver

2. 解压安装:

$ tar zxvf mongodb-mongodb-php-driver-<commit_id>.tar.gz

$ cd mongodb-mongodb-php-driver-<commit_id>

$ phpize

$ ./configure

$ make all

$ sudo make install

3. 配置php.ini

#extension=uploadprogress.so

#extension=http.so

#extension=intl.so

#extension=curl.so

extension=/usr/lib/php5/20121212/curl.so

extension=/usr/lib/php5/20121212/gd.so

extension=/usr/lib/php5/20121212/json.so

extension=/usr/lib/php5/20121212/mysql.so

extension=/usr/lib/php5/20121212/mysqli.so

#extension=/usr/lib/php5/20121212/opcache.so

extension=/usr/lib/php5/20121212/pdo.so

extension=/usr/lib/php5/20121212/pdo_mysql.so

#extension=/usr/lib/php5/20121212/readline.so

#extension=/usr/lib/php5/20121212/xdebug.so

extension=/usr/local/lib/php/extensions/no-debug-non-zts-20121212/redis.so

extension=/usr/local/lib/php/extensions/no-debug-non-zts-20121212/mongo.so

4.重启apache

sudo /etc/init.d/apache2 restart

四、对比MongoDB和MySQL的操作:

mongodb以BSON结构(二进制)进行存储,对海量数据存储有着很明显的优势。下面是Mongodb与Mysql的操作命令的对比。

作用MySQLMongoDB

服务器守护进程mysqldmongod

客户端工具mongomysql

逻辑备份工具mysqldumpmongodump

逻辑还原工具mysqlmongorestore

数据导出工具mysqldumpmongoexport

数据导入工具sourcemongoimport

新建用户并授权grant all on *.* to username@ 'localhost' identified by 'passwd';db.addUser("user","psw")

db.auth("user","psw")

显示库列表show databases;show dbs

进去库use dbname;use dbname

显示表列表show tables;show collections

查询主从状态show slave status;rs.status

创建库

创建表create database name;

create table tname(id int);无需单独创建,直接use进去

无需单独创建,直接插入数据

删除表drop table tname;db.tname.drop()

删除库drop database dbname;首先进去该库,db.dropDatabase()

插入记录insert into tname(id) value(2);db.tname.insert({id:2})

删除记录delete from tname where id=2;db.tname.remove({id:2})

修改/更新记录update tname set id=3

where id=2;db.tname.update({id:2},

{$set:{id:3}},false,true)

查询所有记录select * from tname;db.tname.find()

查询所有列select id from tname;db.tname.find({},{id:1})

条件查询select * from tname where id=2;db.tname.find({id:2})

条件查询select * from tname where id < 2;db.tname.find({id:{$lt:2}})

条件查询select * from tname where id >=2;db.tname.find({id:{$gte:2}})

条件查询select * from tname where id=2

and name='steve';db.tname.find({id:2, name:'steve'})

条件查询select * from tname where id=2

or name='steve';db.tname.find($or:[{id:2},

{name:'steve'}])

条件查询select * from tname limit 1;db.tname.findOne()

模糊查询select * from tname where name like "%ste%"db.tname.find({name:/ste/})

模糊查询select * from tname where name

like "ste%";db.tname.find({name:/^ste/})

获取表记录数select count(id) from tname;db.tname.count()

获取有条件的记录数select count(id) from tname where id=2;db.tname.find({id:2}).count()

查询时去掉重复值select distinct(last_name) from tname;db.tname.distinct('last_name')

正排序查询select *from tname order by id;db.tname.find().sort({id:1})

逆排序查询select *from tname order by id desc;db.tname.find().sort({id:-1})

取存储路径explain select * from tname where id=3;db.tname.find({id=3}).explain()

前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2022 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号-5,京公海网安备11010802025203号