了解MongoDB
文档数据库 MongoDB 用于记录文档( Document )结构的数据,如 JSON XML 结构的数据 。一 条文档就是一条记录(含数据和数据结构),一 条记录里可以包含若干个键值对( Key- Value Pair )。键值对由键和值两部分组成 ,键( Key),又叫字段( Field 。键值对的值可以是普通值,如字符型、整型等;也可以是其他值,如文档、数组及文档数组。
1.MongoDB 的主要特征
(1)高性能 。提供 SON XML 等可嵌入数据快速处理功能;提供文挡的索引功能,以提高查询速度(相对传统数据库而言)。
(2)丰富的查询语言。为数据聚合、结构文档、地理空间提供丰富的查询功能。
(3)高可用性。提供自动故障转移和数据冗余处理功能。
(4)水平扩展能力。提供基于多服务器集群的分布式数据处理能力, 具体处理时分主从和权衡(基于 Hash自动推选)两种处理模式(意味可以处理大数据)。
(5)多个存储引擎的支持。 MongoDB 提供 多个存储引擎,如 WiredTiger 引擎、MMAPvl引擎和 In-Memory ,前两个基于硬盘读写的存储引擎,后一个基于内存的存储引擎。(3.2版本默认使用WiredTiger)
2.MongoDB 存储概念比较
MongoDB | TRDB | 比较说明 |
---|---|---|
数据库DB | 数据库DB | 都有数据库概念,需要用命令建立数据库名 如根据不同项目建立两个数据库名, 一个为test数据库,用于测试,一个为 goodsdb 数据库,用于正式业务数据存储及操作 |
集合 | 表 | 一个集合对应于一个表。 MongoDB 无须事先定义表结构, TRDB 须事先强制定义 |
文档 | 行 | 每个文档都有一个特殊的一id ,id 值在文档所属集合中是唯一的, 默认由MongoDB 自己维护,当然也可以由程序员编程指定 。一个文档类似于TRDB 一行记录,文档要避免不同集合的关联关系 (Join ),而以行为基础TRDB 强调关联关系 |
键值对 | 字段值 | 文档的一个键值对类似于 TRDB 里的一个字段值。不过文档里的值可以嵌入更复杂的数据结构 |
MongoDB 安装
官网提供了详细的安装操作教程:https://docs.mongodb.com/manual/installation
菜鸟教程:https://www.runoob.com/mongodb/mongodb-window-install.html
百度云下载:链接:https://pan.baidu.com/s/1YwHgcHNJX7vAL9I53PXLWg 提取码:38zf
(1)建立安装路径,如 D:\mongodb\data 。在 D:\mongodb\data\路径下分别创建“\db ”和“\log ”子路径, D:\mongodb\data \db 用于存放数据库文件,D :\MongoDB\data\log 用于存放日志(Journal )文件( mongod. log)
(2)单击并运行该安装包。
单击运行安装包,弹出安装界面。
第一步,单击安装界面中的 Next 按钮。
第二步,选择 accept the terms in the License Agreement ,单击Next 按钮。
第三步,依次选择 Custom Browse …,然后选择安装路径( 在此设置为( D:\mongodb\data ),单击 Next 按钮。
第四步,单击 Install 按钮,开始安装,最后单击 Finish 按钮完成安装包的安装。
**注意**
安装路径必须要有 data 子文件路径, db和log 子路径必须在 data 下面,不然安装完成后,执行 Mongo DB会出错。如:D:\MongoDB\data
在bin路径下可以看到如下安装完成的一系列可执行程序。
- mongod.exe ,是 MongoDB 最核心的服务器端数据库管理软件,不能暴露在公共网络上,主要实现服务器端数据库 的数据处理、数据访问管理及其他后台管理,存在于每台数据库服务器上
- mongo.exe ,客户端 shell 运行支持程序,为数据库系统管理提供了交互式操作数据库统一界面,也为系统开发人员测试数据库等操作提供了方便。Mongo 实质是 JavaScript 代码交互式执行平台,是读者频繁使用的一个终端软件。
- mongos.exe ,路由管理程序 ,用于 MongoDB分片集群环境下的业务系统访问的路由管理。
- mongostat.exe, MongoDB 运行状态监控工具,可以快速查看当前运行的 mongod或mangos 实例的状态。
- mοngotop.exe ,监控工具,可以根据时间持续对读写数据进行统计,默认1秒返回一次监控信息。
- mongodump.exe ,以人工执行方式,通过 Mongod或Mongos ,以二进制形式实现对数据库业务数据的导出备份。
- mongorestore .exe ,以人工执行方式,通过 Mongod Mongos ,以二进制形式实现对备份数据的恢复 ,配 mongodump.exe一起使用。
- mongoexport.exe ,在人工执行方式下,以 JSON csv 格式导出数据库数据。
- mongoimport.exe 工执行方式下,对 mo n go ex port. exe 导出的数据恢复到数据库系统之中。
- bsondump.exe ,将 BSON 文件转换为可阅读的格式,如可以把 Mongodump 生成的输出文件转为 JSON 式的可阅读文件。
- mongofiles.exe ,把任何数据类型的独立文件上传到 MongoDB 数据库中,以 GridFS形式分块存储,并可以读取相应文件: MongoDB 支持的各种编程语言的 API 接口都提供类似读写功能。
- mongooplog.exe ,以 Oplog 轮询的方式实现对远程服务器上的数据,同步到本地服务器上。
- mongoperfexe ,用来测试磁盘 IO 性能的工具。
MongoDB 启动
命令:
C:\Users\win7>cd /d d:\mongodb\data\bin
d:\mongodb\data\bin>mongod -dbpath ” d:\mongodb\data\db”
新开一个 Windows 命令提示符界面,在其中执行 cd /d d: mongodb data bin ,然后输入
mongo.exe 命令,启动 Mongo Shell 交互式命令执行平台
Windows 操作系统自动启动 Mongod.exe
- d:\mongodb\bin>mongod --dbpath “d: \mongodb\data\db” --logpath “d:\mongodb\data\log\MongoDB.log” --install --serviceName “MongoDB”
- d:\mongodb\bin>net start MongoDB
一定要在本机用管理员权限操作,不然会报“服务器名无效”的错误
**注意**
特殊情况下想关闭服务和删除进程,其操作命令为:
d : \mongodb\bin>net stop MongoDB (关闭服务)
d:\mongodb\bin>mongod --dbpath “d:\mongodb\data\db” --logpath “d:\mongodb\data\log\MongoDB.log” --remove --serviceName “MongoDB”(删除进程)
数据库建立基本规则
1.数据库名称定义规则
注意事项 | |
---|---|
1 | 不能是空字符串,如”” |
2 | 不得含有“”(空格)、.、$、/\ (空字符〉 |
3 | 区分大小写,建议全部小写 |
4 | 名称最多为“字节 |
5 | 不得使用保留的数据库名,如admin local config test |
2.集合名称定义规则
注意事项 | |
---|---|
1 | 不能是空字符串,如”” |
2 | 不得含有$、\0 (空字符〉 |
3 | 不能以”system ”开头,这是为系统集合保留的前缀 |
4 | 用“.” 来组织子集合,如 book.itbook |
3.文档的键的定义规则
注意事项 | |
---|---|
1 | 不能包含\0 字符(空字符) 这个字符表示键的结束 |
2 | “.” 是被保留的,只能在特定环境下用 |
3 | 区分类型(如字符串、整数等),同时也区分大小写 |
4 | 键不能重复,在一条文档里起唯一的作用 |
4.文档值数据类型
数据类型 | 描述 | 举例 | |
---|---|---|---|
1 | null | 表示空值或者未定义的对象 | {”otherbook”:null} |
2 | 布尔值 | true or false | {”allowing": true} |
3 | 32 位整数 | shell 不支持该类型,默认会转换成 64位浮点数,也可以使用 Numberlnt类 | {”number NumberInt(”3”)} |
4 | 64 位整数 | shell 不支持该类型,默认会转换成 64位浮点数,也可以使用 NumberLong类 | {”longnumber”:NumberLong(”3”)} |
5 | 64 位浮点数 | shell 中的数字就是这种类型 | {”price”:23.5} |
6 | 字符串 | UTF-8 字符串 | {”bookname”:”《 编程》 ”} |
7 | 符号 | shell 不支持。它会将数据库中的符号类型的数据自动转换成字符串 | |
8 | 对象 id | 文挡的 12 字节的唯一id ,保证一条文档记录的唯一性。可以在服务器端自动生成,也可以在代码端生成 | {”id”: Objectld()} |
9 | 日期 | 从标准纪元开始的毫秒数 | {”saledate”:new Date()} |
10 | 正则表达式 | 文档中可以包含正则表达式,遵循JavaScript 的语法 | {”foo”:/foobar/i} |
11 | 代码 | 文档中可以包含 JavaScript 代码 | {”nodeprocess”:“function() {}} |
12 | undefined | 未定义 | {”Explain”: undefined } |
13 | 数组 | 值的集合或者列表 | {”books”;["《C语言》","《java语言》"]} |
14 | 内嵌文档 | JSON,XML 等文档本身 | {bookname :” 《java语言》,bookpice:33.2, adddate:2017-10-1, allow:true, baseinf:{ ISBN: 183838388,press :”大学出版社”} |
数据库建立
1.数据库类型
(1) admin 数据库: 一个权限数据库 ,如果创建用户的时候将该用户添加到 admin 数据库中,那么该用户就自动继承了所有数据库的权限。
(2) local 数据库:这个数据库永远不会被负责,可以用来存储本地单台服务器的任意集合。
(3) config 数据库: 当MongoDB 使用分片模式时, config 数据库在内部使用,用于保存分片的信息。
(4) test 数据库: MongoDB 安装后的默认数据库,可以用于数据库命令的各种操作,包括测试。
**上述数据库为 MongoDB 安装完成后的保留数据库。**
(5)自定义数据库:根据应用系统需要建立的业务数据库。
2.MongoDB 数据库建立相关命令
(1) 创建自定义数据库 use
语法:use 数据库名
(2) 查看数据库 show dbs
语法:show dbs
对于刚刚建立的 goodsdb 数据库并没有显示出来,原因是 goodsd 数据库里没有内容。若 goodsdb据库里有数据了,则会在上述命令显示结果上增加一列 goodsdb 028GB 类似的记录。
(3) 统计某数据库信息 db.stats()
语法:db.stats()
(4) 删除数据库 dropdatabase()
语法:db.dropDatabase() //删除当前数据库
(5) 查看当前数据库下的集合名称 getCollectionNames()
语法:db.getCollectionNames()
(6) 查看数据库用户角色权限 show roles
语法:show roles