目录

一、MongoDB概述

(一)mongodb是一个nosql数据库,它有高性能、无模式、文档型的特点。是nosql数据库中功能最丰富,最像关系数据库的。数据库格式为BSON

(二)MongoDB 是一种面向文档的数据库系统,也可以说是一种基于对象的数据库。

(三)MongoDB 中的最基本单位是文档 (Document),每个文档都是一个对象,可以包含任意数量和任意深度的属性和数组。文档的属性可以是基本类型 (比如数字、字符串等) 或者其他文档类型,数组也可以包含任意类型的数据。

(四)MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

(五)MongoDB 的文档模型具有的特点

1、弱类型

2、动态模式

3、嵌套属性

4、对象引用

(六)相关概念

1、实例

2、库

3、集合

4、文档

5、主键

6、传统的关系型数据库(如MySQL),在数据操作的“三高”需求以及应对Web2.0的网站需求面前,显得力不从心。其中“三高”是指:

(七)MongoDB 特性

1、面向集合文档存储,适合存储json形式的数据;

2、格式自由,数据格式不固定,数据结构发生变更的同时不会影响程序运行;

3、面向对象的sql查询语句,基本涵盖关系型数据库的所有查询语句;

4、有索引的支持,查询效率更快;

5、支持复制和自动故障转移;

6、可以使用分片集群提升查询性能

(八)MongoDB 应用场景

1、游戏场景

2、物流场景

3、社交场景

4、物联网场景

5、视频直播

(九)MongoDB架构选型

(十)MongoDB服务端可运行在Linux、Windows平台,支持32位和64位应用,默认端口为27017。

二、MongoDB主要特点

三、RPM安装MongoDB

(一)vim /etc/yum.repos.d/mongodb.repo

(二)安装mongodb-org

四、目录结构的详细介绍

(一)使用“rpm -ql mongodb-org-server”命令返回的文件列表及其含义:

(二)使用“rpm -ql mongodb-org-shell”命令返回的文件列表及其含义:

(三)使用“rpm -ql mongodb-org-tools”命令返回的文件列表及其含义:

五、MongoDB默认数据库

(一)admin

(二)local

(三)config

六、数据库操作

(一)库操作

1、查看数据库

2、显示当前所在数据库db

3、切换数据库use dbName

4、数据库创建(隐式创建)

5、删除数据库

(二)文档操作

1、查看集合show tables

2、创建集合db.createCollection(“test”)

3、删除集合db.需要删除的集合名称.drop()

4、插入数据(文档)

5、查询数据

6、删除数据

7、更新数据

七、MongoDB数据库备份

(一)备份命令

1、mongodump

2、mongoexport

(二)恢复命令

1、mongorestore

2、mongoimport


一、MongoDB概述

(一)mongodb是一个nosql数据库,它有高性能、无模式、文档型的特点。是nosql数据库中功能最丰富,最像关系数据库的。数据库格式为BSON

(二)MongoDB 是一种面向文档的数据库系统,也可以说是一种基于对象的数据库。

(三)MongoDB 中的最基本单位是文档 (Document),每个文档都是一个对象,可以包含任意数量和任意深度的属性和数组。文档的属性可以是基本类型 (比如数字、字符串等) 或者其他文档类型,数组也可以包含任意类型的数据。

(四)MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

(五)MongoDB 的文档模型具有的特点

1、弱类型

MongoDB 不要求文档中的属性具有相同的数据类型或者结构。

2、动态模式

MongoDB 允许您在一个集合中存储不同结构的文档。

3、嵌套属性

文档可以包含嵌套属性。

4、对象引用

文档可以通过在一个文档中引用另一个文档来建立关系。

通过使用文档模型,MongoDB 实现了比关系型数据库更加灵活的数据存储方式。

(六)相关概念

1、实例

系统上运行的mongodb的进程,类似于mysql实例;

2、库

每个数据库都是独立的,有自己的用户,权限,独立存储集合,类似于mysql的库;

3、集合

由一组文档构成,类似于mysql的表;

4、文档

mongodb数据库的最小数据集,是由多个键值对有序组合的数据单元,类似于mysql的数据记录;

5、主键

唯一标识一行数据

6、传统的关系型数据库(如MySQL),在数据操作的“三高”需求以及应对Web2.0的网站需求面前,显得力不从心。其中“三高”是指:

① High performance – 对数据库高并发读写的需求。

②Huge Storage – 对海量数据的高效率存储和访问的需求。

③ High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求。

(七)MongoDB 特性

1、面向集合文档存储,适合存储json形式的数据;

2、格式自由,数据格式不固定,数据结构发生变更的同时不会影响程序运行;

3、面向对象的sql查询语句,基本涵盖关系型数据库的所有查询语句;

4、有索引的支持,查询效率更快;

5、支持复制和自动故障转移;

6、可以使用分片集群提升查询性能

(八)MongoDB 应用场景

1、游戏场景

使用MongoDB存储游戏用户信息、装备、积分等,直接以内嵌文档的形式存储,方便查询、更新。

2、物流场景

使用MongoDB存储订单信息、订单状态、物流信息,订单状态在运送过程中飞速迭代、以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更查出来,牛逼plus。

3、社交场景

使用MongoDB存储用户信息,朋友圈信息,通过地理位置索引实现附近的人、定位功能。

4、物联网场景

使用MongoDB存储设备信息、设备汇报的日志信息、并对这些信息进行多维度分析。

5、视频直播

使用MongoDB存储用户信息、点赞互动信息。

(九)MongoDB架构选型

1、应用不需要事务及复杂 join 支持

2、新应用,需求会变,数据模型无法确定,想快速迭代开发

3、应用需要2000-3000以上的读写QPS(更高也可以)

4、应用需要TB甚至 PB 级别数据存储

5、应用要求存储的数据不丢失

6、应用需要99.999%高可用

7、应用需要大量的地理位置查询、文本查询

#上述有1个符合,可以考虑 MongoDB,2个及以上的符合,选择 MongoDB 绝不会后悔。

(十)MongoDB服务端可运行在Linux、Windows平台,支持32位和64位应用,默认端口为27017。

推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。

二、MongoDB主要特点

MongoDB中的记录是一个文档,它是由字段和值对组成的数据结构。

多个键及其关联的值有序地放在一起就构成了文档。

MongoDB文档类似于JSON对象。字段的值可以包括其他文档,数组和文档数组。

{“greeting”:“hello,world”}这个文档只有一个键“greeting”,对应的值为“hello,world”。多数情况下,文档比这个更复杂,它包含多个键/值对。

例如:{“greeting”:“hello,world”,“foo”: 3} 文档中的键/值对是有序的,下面的文档与上面的文档是完全不同的两个文档。{“foo”: 3 ,“greeting”:“hello,world”}

#文档中的值不仅可以是双引号中的字符串,也可以是其他的数据类型,例如,整型、布尔型等,也可以是另外一个文档,即文档可以嵌套。文档中的键类型只能是字符串。

三、RPM安装MongoDB

(一)vim /etc/yum.repos.d/mongodb.repo

#将以下内容写入mongodb.repo中

[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc

对写入内容的介绍

(二)安装mongodb-org

命令: yum -y install mongodb-org

启动数据库: systemctl start mongod

四、目录结构的详细介绍

此图为简介,下面是详细介绍

(一)使用“rpm -ql mongodb-org-server”命令返回的文件列表及其含义:

1、/etc/logrotate.d/mongod:MongoDB的日志文件的自动轮转配置文件。

2、/etc/mongod.conf:MongoDB的配置文件,其中包含了MongoDB的各种配置选项,例如端口号、数据目录、日志输出等。

3、/etc/sysconfig/mongod:MongoDB的启动脚本的配置文件,用于设置启动MongoDB的各种选项。

4、/usr/bin/mongod:MongoDB的服务器程序。

5、/usr/lib/systemd/system/mongod.service:MongoDB的systemd服务单元配置文件。

6、/usr/share/doc/mongodb-org-server-:MongoDB的文档目录,其中包含了MongoDB的各种文档和说明。

7、/usr/share/licenses/mongodb-org-server-:MongoDB的许可证文件。

8、/var/lib/mongo:MongoDB的数据目录,其中包含了所有的数据库文件和数据文件,例如*.ns、*.0等文件。

9、/var/log/mongodb:MongoDB的日志目录,其中包含了所有的日志文件,例如mongod.log等文件。

(二)使用“rpm -ql mongodb-org-shell”命令返回的文件列表及其含义:

1、/usr/bin/bsondump:将MongoDB的BSON文件转换成JSON格式的工具。

2、/usr/bin/mongo:MongoDB的命令行客户端,用于连接和管理MongoDB实例。

3、/usr/bin/mongodump:将MongoDB数据库中的数据导出到文件中的工具。

4、/usr/bin/mongoexport:将MongoDB数据库中的数据导出到CSV、JSON或TSV等格式的文件中的工具。

5、/usr/bin/mongofiles:用于管理MongoDB的GridFS文件系统中的文件的工具。

6、/usr/bin/mongoimport:将CSV、JSON或TSV等格式的文件导入到MongoDB数据库中的工具。

7、/usr/bin/mongooplog:用于重放MongoDB的操作日志的工具。

8、/usr/bin/mongorestore:将MongoDB数据库中的数据从备份文件中恢复的工具。

9、/usr/bin/mongostat:用于监控MongoDB实例的状态的工具。

10、/usr/bin/mongotop:用于监控MongoDB实例的读写操作的工具。

11、/usr/share/doc/mongodb-org-shell-:MongoDB的文档目录,其中包含了MongoDB的各种文档和说明。

12、/usr/share/licenses/mongodb-org-shell-:MongoDB的许可证文件。

(三)使用“rpm -ql mongodb-org-tools”命令返回的文件列表及其含义:

1、/usr/bin/bsondump:将MongoDB的BSON文件转换成JSON格式的工具。

2、/usr/bin/mongoexport:将MongoDB数据库中的数据导出到CSV、JSON或TSV等格式的文件中的工具。

3、/usr/bin/mongodump:将MongoDB数据库中的数据导出到文件中的工具。

4、/usr/bin/mongofiles:用于管理MongoDB的GridFS文件系统中的文件的工具。

5、/usr/bin/mongoimport:将CSV、JSON或TSV等格式的文件导入到MongoDB数据库中的工具。

6、/usr/bin/mongooplog:用于重放MongoDB的操作日志的工具。

7、/usr/bin/mongorestore:将MongoDB数据库中的数据从备份文件中恢复的工具。

8、/usr/bin/mongostat:用于监控MongoDB实例的状态的工具。

9、/usr/bin/mongotop:用于监控MongoDB实例的读写操作的工具。

10、/usr/share/doc/mongodb-org-tools-:MongoDB的文档目录,其中包含了MongoDB的各种文档和说明。

11、/usr/share/licenses/mongodb-org-tools-:MongoDB的许可证文件。

#mongodb-org-server是 MongoDB 服务器的软件包,它包含了 mongod(MongoDB 服务器进

程)和 mongos(MongoDB 分片路由进程)等核心组件。

# mongodb-org-shell是 MongoDB shell 客户端工具的软件包,它包含了 mongo 和 mongodump

等工具程序。

#mongodb-org-tools是 MongoDB 的其他命令行工具软件包,例如 mongostat、mongotop、

mongoexport、mongoimport 等。

五、MongoDB默认数据库

(一)admin

从权限的角度来看,这是”root”数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。
一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。

(二)local

这个数据库永远不会被复制,可以用来存储限于本地单台服务器的任意集合。

(三)config

当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

六、数据库操作

(一)库操作

1、查看数据库

①show databases
② show dbs

2、显示当前所在数据库db

3、切换数据库use dbName

4、数据库创建(隐式创建)

①不用主动创建,使用use newDB,会自动创建不存在的数据库

②只有在库中创建集合后才会保存,并使用show dbs查看到

5、删除数据库

①use dbName

②db.dropDatabase()

(二)文档操作

1、查看集合show tables

2、创建集合db.createCollection(“test”)

3、删除集合db.需要删除的集合名称.drop()

4、插入数据(文档)

①db.集合名称.insert({key:value})单行

注意两条命令的用法,以及所产生的结果

②db.集合名称.insertmany([{key:value},{key:value},{key:value}]) 多行

#方括号 [ ] 通常用来表示一个数组。在此特定的命令中,数组中包含了待插入的多个文档对象,每个文档对象都是一个 JSON 格式的键值对集合。

③mongodb默认数字的数据类型float浮点型,若要改变为整型:NumberInt(数字)

5、查询数据

①全集合查询

db.集合名称.find({})

db.集合名称.find()

②条件查询

db.info.find({查询条件1key:value,查询条件2,…},{key1:1|0,key2:1|0,…})

#key:1 显示,key:0 不显示

当显示的key只有一个时,key:1 只显示该key及对应value,key:0 显示除了该key之外其他所有keyvalue

示例一

示例二

③查询集合中有多少文档db.集合名称.count()

6、删除数据

①全文删除db.集合名称.remove({})

②条件删除db.集合名称.remove({key:value})

7、更新数据

①db.info.update({_id:”3″}, {$set:{nickname:”jack”}})

②所有满足条件的文档都进行更新

db.info.update({userid:”1003″},{$set:{nickname:”tom”}},{multi:true})

③更新文档进行数值递增

db.info.update({userid:”1003″},{$inc:{likenum:NumberInt(1000)}})

七、MongoDB数据库备份

(一)备份命令

1、mongodump

#mongodump 是 MongoDB 自带的备份工具,可以将整个数据库或指定的集合备份到一个 BSON 文件中。mongodump 工具通常与 mongorestore 命令搭配使用,可以将备份的数据恢复到 MongoDB 中。

#mongodump 可以备份整个数据库或者指定的集合。如果不指定集合名称,mongodump 会备份整个数据库。mongodump 还支持选项来限制备份的数量或者仅备份指定时间之后的数据。

①选项:

-h=hostname:port

-u=

-p=

–authenticationDatabase=

-d=

-o=

此图为详细介绍选项(版本一)
此图为详细介绍选项(版本二)

②语法:mongodump -d dbName -h hostName:port -u userName -p Password -o backupDirectory

2、mongoexport

语法:mongoexport -d dbName -c tableName -h hostName:port -u userName -p Password -o backupDirectory/jsonFile.json

#mongoexport 是 MongoDB 的数据导出工具,可将 MongoDB 数据库中的数据以 JSON 或 CSV 等格式导出到文件或者标准输出流中。
#mongoexport 命令的基本用法是指定要导出的数据库名称(--db)、集合名称(--collection)和输出文件名称或者输出流(--out)。其他常用选项可以根据需求进行选择,例如指定导出的字段列表(--fields)、查询条件(--query)、最大记录数(--limit)等。如果希望输出到标准输出流,可以将输出文件名称设置为 -(减号)。

(二)恢复命令

1、mongorestore

语法:mongorestore -h hostName -u username -p password -d dbName -c tableName bakcupDirector/bsonFile

#mongorestore 是 MongoDB 自带的数据恢复工具,可以将由 mongodump 命令生成的备份文件恢复到 MongoDB 数据库中。mongorestore 命令需要指定备份文件的位置和恢复目标数据库的位置。

#mongorestore 可以恢复由 mongodump 命令生成的备份文件,但也可以恢复其他生成备份的工具生成的备份文件。mongorestore 会比较备份文件中的集合和已存在的集合,如果有相同的集合,mongorestore 会更新已存在的集合,如果集合已从数据库中删除,mongorestore 会重新创建一个新集合。

2、mongoimport

语法:mongoimport -d dbName -c tableName -h hostName:port -u userName -p Password backupDirectory/jsonFile.json

#mongoimport 是 MongoDB 自带的数据导入工具,可以将文件中的数据导入到 MongoDB 数据库中。mongoimport 支持多种数据格式,包括 JSON、CSV、TSV 和 BSON 等格式。

#mongoimport 支持多种数据格式,可以灵活指定要导入数据的格式,如 JSON 格式、CSV 格式等。导入数据时,如果指定的集合已经存在,则mongoimport 默认会向集合中继续添加数据;如果要删除原有数据,可以使用--drop参数。