html
MongoDB是一款强大、灵活、且易于扩展的通用型数据库,MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。mysql
在高负载的状况下,添加更多的节点,能够保证服务器性能。sql
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。mongodb
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档相似于 JSON 对象。字段值能够包含其余文档,数组及文档数组。shell
MongoDB是由C++编写的,是一个基于分布式文件存储的开源数据库系统,它不是关系型数据库。在高负载的状况下,添加更多的节点,能够保证服务器的性能。数据库
MongoDB是一个面向文档(document-oriented)的数据库,而不是关系型数据库。数组
不采用关系型主要是为了得到更好得扩展性。固然还有一些其余好处,与关系数据库相比,面向文档的数据库再也不有“行“(row) 的概念取而代之的是更为灵活的“文档”(document)模型。缓存
经过在文档中嵌入文档和数组,面向文档的方法可以仅使用一条记录 来表现复杂的层级关系,这与现代的面向对象语言的开发者对数据的见解一致。服务器
另外,再也不有预约义模式(predefined schema):文档的键(key)和值(value)再也不是固定的类型和大小。因为没有固定的模式,根据须要添加或删除字段变得更容易了。session
一般因为开发者可以进行快速迭代,因此开发进程得以加快。并且,实验更容易进行。开发者能尝试大量的数据模型,从中选一个最好的。
应用程序数据集的大小正在以难以想象的速度增加。随着可用带宽的增加和存储器价格的降低,即便是一个小规模的应用程序,须要存储的数据量也可能大的惊人,甚至超出了不少数据库的处理能力。过去很是罕见的T级数据,如今已是司空见惯了。
因为须要存储的数据量不断增加,开发者面临一个问题:应该如何扩展数据库,分为纵向扩展和横向扩展,纵向扩展是最省力的作法,但缺点是大型机通常都很是贵,并且当数据量达到机器的物理极限时,花再多的钱也买不到更强的机器了,此时选择横向扩展更为合适,但横向扩展带来的另一个问题就是须要管理的机器太多。
MongoDB的设计采用横向扩展。面向文档的数据模型使它能很容易地在多台服务器之间进行数据分割。MongoDB可以自动处理跨集群的数据和负载,自动从新分配文档,以及将用户的请求路由到正确的机器上。这样,开发者可以集中精力编写应用程序,而不须要考虑如何扩展的问题。
若是一个集群须要更大的容量,只须要向集群添加新服务器,MongoDB就会自动将现有的数据向新服务器传送。
MongoDB做为一款通用型数据库,除了可以建立、读取、更新和删除数据以外,还提供了一系列不断扩展的独特功能。
索引
支持通用二级索引,容许多种快速查询,且提供惟一索引、复合索引、地理空间索引、全文索引
聚合
支持聚合管道,用户能经过简单的片断建立复杂的集合,并经过数据库自动优化
特殊的集合类型
支持存在时间有限的集合,适用于那些将在某个时刻过时的数据,如会话session。相似地,MongoDB也支持固定大小的集合 ,用于保存近期数据,如日志
文件存储
支持一种很是易用的协议,用于存储大文件和文件元数据。MongoDB并不具有一些在关系型数据库中很广泛的功能, 如连接join和复杂的多行事务。省略这些的功能是处于架构上的考虑,或者说为了获得更好的扩展性,由于在分布式系统中这两个功能难以高效地实现
MongoDB的一个主要目标是提供卓越的性能,这很大程度上决定了MongoDB的设计。MongoDB把尽量多的内存用做缓存cache, 视图为每次查询自动选择正确的索引。
总之各方面的设计都旨在保持它的高性能,虽然MongoDB很是强大并试图保留关系型数据库的不少特性,但它并不追求具有关系型数据库的全部功能。
只要有可能,数据库服务器就会将处理逻辑交给客户端。这种精简方式的设计是MongoDB可以实现如此高性能的缘由之一。
1.下载安装包
MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包,你能够从MongoDB官网下载安装,MongoDB 预编译二进制包下载地址:https://www.mongodb.com/download-center#community
2.安装
指定安装路径,我这里安装在D:\ProgramFiles\MongoDB,添加D:\ProgramFiles\MongoDB\bin到环境变量中。
3.新建目录与文件夹
D:\ProgramFiles\MongoDB\data\db
D:\ProgramFiles\MongoDB\log\mongod.log
4.新建配置文件mongo.cfg,参考https://docs.mongodb.com/manual/reference/configuration-options/
systemLog: destination: file path: "D:\ProgramFiles\MongoDB\log\mongod.log" logAppend: true storage: journal: enabled: true dbPath: "D:\ProgramFiles\MongoDB\data\db" net: bindIp: 0.0.0.0 port: 27017 setParameter: enableLocalhostAuthBypass: false
5.制做系统服务
mongod --config "D:\ProgramFiles\MongoDB\mongod.cfg" --bind_ip 0.0.0.0 --install
或者直接在命令行指定配置
mongod --bind_ip 0.0.0.0 --port 27017 --logpath D:\ProgramFiles\MongoDB\log\mongod.log --logappend --dbpath D:\ProgramFiles\MongoDB\data\db --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install
6.启动MongoDB服务
net start MongoDB
net stop MongoDB
7.登陆MongoDB
mongo 连接:http://www.runoob.com/mongodb/mongodb-window-install.html 当没有帐号密码登陆的时候,默认就是管理员登陆。,由于刚刚作系统服务install的时候没有指定 --auth(没有指定则没有权限认证这一说),(至关于mysql跳过受权表启动同样)
帐号管理:https://docs.mongodb.com/master/tutorial/enable-authentication/
1.建立有权限的用户
use admin db.createUser( { user: "root", # 这个root能够随便写 pwd: "123", roles: [{role: "root", db: "admin"}] # 权限,role是root说明是管理员, } ) use test db.createUser( { user: "egon", pwd: "123", roles: [ {role: "readWrite", db: "test"}, # 针对test库有读写权限,操做本身的库有读写权限 {role: "read", db: "db1"} ] # 针对db1库读权限,操做其余库有读权限 } )
2.重启数据库
mongod --remove mongod --config "C:\mongodb\mongod.cfg" --bind_ip 0.0.0.0 --install --auth # 或者 mongod --bind_ip 0.0.0.0 --port 27017 --logpath D:\MongoDB\log\mongod.log --logappend --dbpath D:\MongoDB\data\db --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install --auth
3.登陆,注意使用双引号而非单引号
# 方式一 mongo --port 27017 -u "root" -p "123" --authenticationDatabase "admin" # 方式二:在登陆以后用db.auth("帐号","密码")登陆 mongo use admin db.auth("root","123")
推荐博客http://www.javashuo.com/article/p-kbhmsjgf-he.html
建立帐号密码+开启认证机制
1.mongo 127.0.0.1:27017/config # 链接到任何数据库config 2.mongo --nodb # 不链接到任何数据库 3.启动以后,在须要时运行new Mongo(hostname)命令就能够链接到想要的mongod了 > conn=new Mongo('127.0.0.1:27017') connection to 127.0.0.1:27017 > db=conn.getDB('admin') admin 4.help查看帮助 5.mongo是一个简化的JavaScript shell,是能够执行JavaScript脚本的