html
mysql
MongoDB做为一款通用型数据库,除了可以建立、读取、更新和删除数据以外,还提供了一系列不断扩展的独特功能sql
一、索引mongodb
支持通用二级索引,容许多种快速查询,且提供惟一索引、复合索引、地理空间索引、全文索引数据库
二、聚合数组
支持聚合管道,用户能经过简单的片断建立复杂的集合,并经过数据库自动优化浏览器
缓存
支持存在时间有限的集合,适用于那些将在某个时刻过时的数据,如会话session。相似地,MongoDB也支持固定大小的集合,用于保存近期数据,如日志安全
四、文件存储服务器
支持一种很是易用的协议,用于存储大文件和文件元数据。MongoDB并不具有一些在关系型数据库中很广泛的功能,如连接join和复杂的多行事务。省略 这些的功能是处于架构上的考虑,或者说为了获得更好的扩展性,由于在分布式系统中这两个功能难以高效地实现。
须要注意的是: #一、文档中的键/值对是有序的。 #二、文档中的值不只能够是在双引号里面的字符串,还能够是其余几种数据类型(甚至能够是整个嵌入的文档)。 #三、MongoDB区分类型和大小写。 #四、MongoDB的文档不能有重复的键。 #五、文档中的值能够是多种不一样的数据类型,也能够是一个完整的内嵌文档。文档的键是字符串。除了少数例外状况,键可使用任意UTF-8字符。 文档键命名规范: #一、键不能含有\0 (空字符)。这个字符用来表示键的结尾。 #二、.和$有特别的意义,只有在特定环境下才能使用。 #三、如下划线"_"开头的键是保留的(不是严格要求的)。
4.0下载地址: https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-4.0.8-signed.msi
安装时去除多余的组件安装提升速度:
此时MongoDB已经开启,浏览器访问http://localhost:27017/,页面上输出: It looks like you are trying to access MongoDB over HTTP on the native driver port.
说明MongoDB已经启动了,且它的默认端口(27017)没有被占用。
运行bin下的终端程序mongo.exe 其与mysql性质相同都是客户端!
'mongo' 看见欢迎信息则说明登陆成功
此时没有任何的权限限制,默认是管理员角色。
#一、建立帐号 use admin db.createUser( { "user": "root", "pwd": "123", "roles": [ { "role": "root","db": "admin" } ] } ) use test db.createUser( { "user": "jerry", "pwd": "123", "roles": [ { "role": "readWrite", db: "test" }, { "role": "read", "db": "db1" } ] } ) 在mongodb中用不一样的数据库来区分权限,要管理哪一个数据库就在哪一个数据库下建立用户便可,建立管理员帐户则在admin下建立! db 是一个全局变量 表示当前数据库 db.createUser()是调用一个内部函数用于建立用户 每一个帐号能够具有多个角色
默认状况下mongodb不会加载认证信息就像mysql跳过受权表同样,建立完帐号用户须要开启用户认证。
修改配置文档mongod.cfg(位置:安装目录\bin下)
首先,将bind_ip改成0.0.0.0(让其余电脑能够访问,用于远程链接)
security: authorization: enabled # 注意缩进
而后找到#secuity:改为下图所示,开启安全认证。
而后重启MongDB Server服务,启用认证。
#直接mongo进入程序 已经没法查看数据库 show dbs #登陆方式1: authenticationDatabase指定数据库 mongo --port 27017 -u "root" -p "123" --authenticationDatabase "admin" #登陆方式2:进入mongo后,进入某个数据库中,再输入密码 use admin db.auth("root","123") #删除帐号 db.dropUser('用户名'); #修改密码 db.changeUserPassword(用户名, 新密码);