简介
MongoDB是由C++语言编撰的一个基于分布式文件储存的开源数据库系统,它的目的在于为WEB应用提供可扩充的高性能数据储存解决方案。
MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系型数据库的。它支持的数据结构十分松散,会将数据储存为一个文档,数据结构由通配符对(key=>value)组成,是类似于json的bson格式,数组值可以包含其它文档、数组和文档字段,因而可以储存比较复杂的数据类型。
MongoDB最大的特征就是它支持的查询语言十分强悍,其句型有点类似于面向对象的查询语言,几乎可以实现类似关系型数据库单表查询的绝大部份功能linux 下载,并且还支持对数据构建索引。
MongoDB的主要特征:
1)MongoDB提供了一个面向文档储存,操作上去比较简单和容易的非关系型数据库。
2)你可以在MongoDB记录中设置任何属性的索引来实现更快的排序。
3)你可以通过本地u或则网路创建数据镜像,这促使MongoDB富含更强的扩充性。
4)假如负载的降低(须要更多的储存空间和更强的处理能力),它可以分布在计算机网路中的其它节点上,这就是所谓的分片。
5)MongoDB支持丰富的查询表达式,查询指令使用JSON方式的标记,可轻易查询文档中内嵌的对象和字段。
6)MongoDB使用update()命令可以实现替换完成的文档(数据)或则一些指定的数据数组。
7)MongoDB中的Map/Reduce主要是拿来对数据进行批量处理和聚合操作,Map函数调用emit(key,value)遍历集合中所有的记录,将key于value传递给Reduce函数进行处理。另外Map函数和Reduce函数是使用JavaScript编撰的,所以可以通过db.runCommand和mapreduce命令来执行MapReduce操作。
8)GridFS是MongoDB中的一个外置功能,可以用于储存大量小文件。
9)MongoDB准许在服务端执行脚本,可以用JavaScript编撰某个函数,直接在服务端执行,也可以吧函数的定义储存在服务端,上次直接调用即可。
10)MongoDB支持各类编程语言:RUBY、PYTHON、JAVA、C++、PHP、C#等多种语言而且MongoDB的安装也十分简单。
MongoDB官网:
MongoDB学习网站:
一、MongoDB的安装
1.下载安装包
MongoDB包下载地址:http://www.mongodb.org/downloads
下载形式:
wget
解压缩压缩包:
tar-xvfmongodb-linux-x86_64-rhel62-3.4.9.tgz
2.安装打算
创建数据库文件夹与日志文件、配置文件:
mkdir-p/usr/local/mongodb/data
touch/usr/local/mongodb/mongod.log
touch/usr/local/mongodb/mongodb.conf
将mongodb联通到/usr/local/mongdb文件夹:
mv/usr/local/mongodb-linux-x86_64-rhel62-3.4.9/*/usr/local/mongodb/
3.启动mongodb(有两种方法)
参数启动:
参数启动可以直接在命令前面加配置参数,也可以加配置文件启动,如下加配置参数启动:
cd/usr/local/mongodb/bin
./mongod--dbpath=/usr/local/mongodb/data--logpath=/usr/local/mongodb/mongod.log--logappend--port=27017--fork
注:假如加权限就用--auth参数,不须要权限就除去
若果在配置文件中配置好各项参数,则可以使用配置文件启动:
./mongod--config/usr/local/mongodb/mongodb.conf
附表:mongodb配置文件解读
系统服务启动:
使用系统服务命令启动须要先将服务加入到系统服务中,附表:将mongod添加到系统服务
servicemongodstart|stop|restart
注:可以将mongodb临时加入系统路径变量中,这样可以不用输入路径直接启动linux命令行和shell脚本编程宝典,代码如下:
exportPATH=/usr/local/mongodb/bin:$PATH
之后可以查看是否成功:echo$PATH
4.参数解释:--dbpath数据库路径(数据文件)
--logpath日志文件路径
--master指定为主机器
--slave指定为从机器
--source指定主机器的IP地址
--pologSize指定日志文件大小不超过64M.由于resync是特别操作量大且历时,最好通过设置一个足够大的pologSize来防止resync(默认的oplog大小是空闲c盘大小的5%)。
--logappend日志文件末尾添加
--port启用端标语
--fork在后台运行
--only指定只复制哪一个数据库
--slavedelay指从复制测量的时间间隔
--auth是否须要验证权限登入(用户名和密码)
--config配置文件位置
----------------------------------------------------------------------------------------------
二、用户授权和管理
1、mongodb安装好后第一次步入是不须要密码的linux怎么执行bin文件,也没有任何用户,通过shell命令可直接步入,cd到mongodb目录下的bin文件夹,执行命令./mongo即可
[root@node1 ~]# cd /usr/local/mongodb/bin/ [root@node1 bin]# ./mongo MongoDB shell version v3.4.9 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.4.9 Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see http://docs.mongodb.org/ Questions? Try the support group http://groups.google.com/group/mongodb-user Server has startup warnings: 2017-09-24T19:37:13.942+0800 I STORAGE [initandlisten] 2017-09-24T19:37:13.942+0800 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTi ger storage engine2017-09-24T19:37:13.942+0800 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem 2017-09-24T19:37:14.187+0800 I CONTROL [initandlisten] 2017-09-24T19:37:14.187+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. 2017-09-24T19:37:14.187+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. 2017-09-24T19:37:14.187+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recom mended.2017-09-24T19:37:14.187+0800 I CONTROL [initandlisten] 2017-09-24T19:37:14.190+0800 I CONTROL [initandlisten] 2017-09-24T19:37:14.190+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. 2017-09-24T19:37:14.190+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2017-09-24T19:37:14.190+0800 I CONTROL [initandlisten] 2017-09-24T19:37:14.190+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. 2017-09-24T19:37:14.190+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2017-09-24T19:37:14.190+0800 I CONTROL [initandlisten] > use test; switched to db test
2、添加管理用户(mongoDB没有无敌用户root,只有能管理用户的用户userAdminAnyDatabase),
> use admin switched to db admin > db.createUser( {user: "admin",pwd: "123456",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]}) Successfully added user: { "user" : "admin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] } >
注:添加完用户后可以使用showusers或db.system.users.find()查看已有用户
3、添加完管理用户后,关掉MongoDB,并使用权限形式再度开启MongoDB,这儿注意不要使用kill直接去杀掉mongodb进程,(假如这样做了,请去data/db目录下删掉mongo.lock文件),可以使用db.shutdownServer()关掉
4、使用权限形式启动MongoDB
./mongod--dbpath=/usr/local/mongodb/data--logpath=/usr/local/mongodb/mongod.log--fork--auth
或则在配置文件中更改:
auth=true
#noauth=true
5、进入mongoshell,使用admin数据库并进行验证,假若不验证,是做不了任何操作的。
>useadmin
>db.auth("admin","123456")#认证,返回1表示成功
6、验证以后还是做不了操作,由于admin只有用户管理权限,下边创建用户,用户都跟随库走,
>usemydb
>db.createUser({user:"root",pwd:"123456",roles:[{role:"readWrite",db:"mydb"}]})
7、使用创建的用户root登陆进行数据库操作:
[root@node1 bin]# pwd /usr/local/mongodb/bin [root@node1 bin]# ./mongo 127.0.0.1/mydb -uroot -p MongoDB shell version v3.4.9 Enter password: connecting to: mongodb://127.0.0.1/mydb MongoDB server version: 3.4.9 > db mydb > use mydb switched to db mydb > show collections >
之后就可以进行增删改查各类数据操作...
----------------------------------------------------------------------------------------------
三、Linux下安装PHP的MongoDB扩充
由于是自动安装的MongoDB,所以也须要编译安装MongoDB扩充,步骤如下:
1)下载最新的phpmongodb扩充源码,源码可以在
下载.
2)解压,步入安装目录
wget
tar-zxvfmongo-1.4.0.tgz
cdmongo-1.4.0
3)步入文件夹后linux怎么执行bin文件,首先运行phpize来编译扩充的环境
[root@localhostmongo-1.4.0]#/usr/bin/phpize
Configuringfor:
PHPApiVersion:20121113
ZendModuleApiNo:20121212
ZendExtensionApiNo:220121212
4)运行后,我们运行./configure脚本来进行配置
./configure--with-php-config=/usr/local/php/bin/php-config&&make&&makeinstall
##--with-php-config这个参数是告诉配置脚本php-config这个程序的路径
5)完成后,请编辑你php.ini文件降低一行
extension=mongo.so
通常默认的编译php的ini文件/usr/local/php/etc/php.ini
重启Apache/Nginx[或则/etc/init.d/php-fpmrestart]打开phpinfo
见到mongo模块,证明MongoDB的php扩充安装成功。
OK,至此你可以使用php来操作MongoDB了
你们须要哪些方面的技术文章可以在评论@我,我那边上次可以发相关的,喜欢就关注哦~