6、连接指定的MongoDB数据库
八、MongoDB数据库常用命令:
1、查看所有数据库:
2、查看当前所在数据库:
3、查看当前所在数据库中所有集合:
4、查看当前数据库相关信息(名称、文档个数、视图、索引、大小等):
5、创建、打开、切换 数据库:
6、删除数据库(注:这里是删除当前所在的数据库)
7、清屏(这是Dos的命令,当窗口中的内容太多时,可以使用该命令,清除屏幕内容,保持界面清晰):
8、MongoDB 数据库备份与恢复,集合导入与导出:
9、操作帮助命令(列出MongoDB数据库所有的操作方法)
九、启动 或 创建 指定的MongoDB数据库:
1、使用 mongod 命令: 创建 或 启动 指定的MongoDB数据库!
2、如果mongodb数据库路径太长,要输入很久,还可这样做
3、注意事项:
十、MongoDB数据库-复制集
1、为什么要用复制集?
2、在windows系统下搭建MongoDB复制集:
3、启动复制集节点
4、关联复制集节点
5、查看从节点是否正常同步数据
十一、MongoDB数据库-模型设计
1、什么是数据模型?
2、数据模型的三要素:
3、什么时候才应该使用引用方式(拆分集合(表)):
4、MongoDB 引用是有限制的:
5、MongoDB 文档模型设计的三个误区 :
十二、MongoDB数据的操作:(和关系型数据库一样,就是增、删、查、改)
1、插入数据:insert()、insertOne()、insertMany()
2、查找数据:find()、findOne()
3、修改数据:update()
4、删除数据:remove()
5、删除集合:drop()
6、索引:
十三、在Node.js中使用MongoDB数据库
1、Node.js框架:
2、MongbDB驱动:
MongoDB 是一种基于文档的非关系(NoSQL)数据库,为开发者提供了高性能、高可用性和易用性的灵活且高效的数据存储解决方案。在当今快速发展的软件开发领域,开发者需要一个能够快速适应变化、处理大量数据并且易于扩展的数据库解决方案。
MongoDB 官网https://www.mongodb.comhttps://www.mongodb.com/
- MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
- MongoDB 可在高负载的情况下,添加更多的节点,可以保证服务器性能。
- MongoDB 可为Web应用提供可扩展的高性能数据存储解决方案。
- MongoDB 将数据存储在灵活的json文档中,这意味着可以直接得到从文档到文档的数据、结构等。
- MongoDB 是免费使用的(MongoDB分 社区版[在所有环境下都免费] 和 企业版[在开发环境免费,生产环境收费]两个版本)。
- MongoDB 数据库具有可伸缩性和灵活性,可帮助你快速查询和索引你需要数据。
注:由于MongoDB 官网要求登录以后才能进入下载页面(否则即便进入下载页面也会重定向到用户登录页面),所以如果想要下载官方原版的MongoDB数据库,要先登录(没有账户可以注册)后再进入下载页面去下载。
1、官方下载地址:
https://www.mongodb.com/try/downloadhttps://www.mongodb.com/try/download
在这里根据自己的需要,选择下载对应系统的MongoDB数据库版本(注:在MongoDB版本中,是偶数:如3.2.x、3.4.x、3.6.x表示正式版【可用于生产环境】,是奇数:3.1.x、3.3.x、3.5.x表示开发版,而OS系统版本:自动给你推荐你当前适合的MongoDB数据库版本)。
然后点击 Download按扭后,进入下载页面:
注:进入上面这个下载页面后,会自动开始下载!!!(如没反应就F5 刷新一下当前页面,由于是外网,所以就耐心点吧!)。
2、其他下载方式:除了上面的下载方式以外,也可以试试下面的下载链接!!
- MongoDB Windows系统64位下载地址:Try MongoDB Atlas Products | MongoDB
- MongoDB Windows系统32位下载地址:Try MongoDB Atlas Products | MongoDB
- MongoDB 全部版本下载地址:Try MongoDB Atlas Products | MongoDB
MongoDB的安装非常简单,在下载完成后,接直接双击下载好的MongoDB安装包,进入MongoDB安装界面,点击Next下一步、同意条款、选择安装路径 和 日志路径、勾选是否安装MongoDB Compass(MongoDB数据库图形管理工具,类似MySQL的Navicat ),其它的步骤一直点下一步直到完成安装就OK啦。
点击开始安装:
选择MongoDB安装方式:
选择MongoDB安装路径:
注意:MongoDB 3.x系列版本的数据库,在安装成功后,每次在使用前都需要手动启动MongoDB服务!
现在:MongoDB 4.x系列版本的数据库,在安装时默认安装(选中了 Install MongoD as a Service)服务 ,就是在开机时自动启动 MongoDB 服务,然后就可以直接使用啦!
MongoDB 4.x安装具体如下所示:
选择MongoDB数据库图形化界面管理工具:
然后就一直下一步、Next 直到 Flnish 安装完毕,到此就MongoDB就安装结束啦!
1、下载地址:MongoDB Compass Download | MongoDB
2、注意事项:在MongoDB Compass选择下载时,可选择对应的系统版本(这里以windows系统为例):
- zip绿色版(免安装,解压后就可以用)
- msi安装版(Windows Installer的数据包,需要一步步安装到本地)
- exe安装版(可执行文件,需要一步步安装到本地)
下面是Msi安装版,安装界面:
MongoDB Compass的安装没有什么好配置的,直接点击 Next 至到 Flnish 就安装结束啦!
MongoDB数据库的图形化的数据库管理工具,可以在这里面对数据进行很友好的操作:如查看、编辑、导入、导出等相应的。
1、MongoDB v3.6版安装目录的文件
2、 MongoDB v4.4版安装目录文件
1、配置MongoDB全局环境变量(就是在电脑中任何地方都可以合用mongo、mongod等命令)!
注:配置完成后,重启电脑, 环境变量才生效哦!重启后,我们就能在系统的任何位置,使用mongo命令了:
如:查看MongoDB数据库存的版本:
2、MongoDB数据库中的常用述语:
1、在MongoDB中,数据库是以文件形式存储的,数据库目录中存储了相应的数据库!
2、在MongoDB中,把传统数据库中的 "表" 叫作:Collections "集合"!
3、在MongoDB中,向集合存储数据时,直接以JSON格式,进行存储 和 读取操作!
4、在MongoDB中,集合中的数据内容叫作:Documents "文档"!
3、进入MongoDB数据库的语法环境:
在命令窗口中,输入 mongo 回车, 就进入了MongoDB数据库的语法环境了!
注:安装好MongoDB数据库后,默认是【非授权模式】(也就是不需要任何权限验证,直接在命令窗口中输入 mongo 回车,就连接上了)。
MongoDB默认IP:mongodb://127.0.0.1
MongoDB默认端口:27017
完整的IP+端口就是:mongodb://127.0.0.1:27017 或 mongodb://localhost:27017
由于:安装好MongoDB数据库后,默认是【非授权模式】(也就是不需要任何权限验证、不需要验证账户,直接在命令窗口中输入 mongo 回车,就可以进行相关操作),这是非常不安全的(尤其是在生产环境中,当然如果是自己玩玩的话就无所谓了)!!
所以:为了数据的安全,我们都应该去配置数据库的访问权限 和 修改默认(mongodb://127.0.0.1:27017)连接绑定IP 和 端口号!!
1、创建MongoDB管理用户:
- 创建超级管理账户:
- 创建普通管理账户:
- MongoDB数据库账户配置常用命令:
- MongoDB数据库中的内置角色:
2、修改MongoDB数据库配置:
MongoDB数据库的相关配置信息,是存储在mongodb安装目录bin目录中的mongod.cfg文件中,
注:在修改mongod.cfg文件之前,请记得要先备份一份哦,以防万一!!
如上图所示,开启数据库访问权限验证:修改完成后,记得要保存哦!!
注:前面代有 # 的配置项,表示被注释(无效)状态的)
3、重新启动MongoDB服务
注:只要修改了mongod.cfg文件,一定要重新启mongodb服务后才会生效哦!!
打开服务步骤:
此电脑(计算机) 右键 -> 管理 -> 服务和应用程序 -> 服务 -> MongoDB Server (MongoDB) -> 右键 点击 重新启动(E)或 点击左侧的(重启动此服务)
或者 Win + R 运行 services.msc 也能打开如下 服务界面,找到 MongoDB Server (MongoDB) -> 右键 点击 重新启动(E)或 点击左侧的(重启动此服务)
4、用刚才创建好的超级管理账户连接数据库:
注:重新启动mongodb服务后,用一个新的命令窗口来做操作:通过如下图所示,在配置账户权限后,直接在命令窗口中用 mongo 命令,运行相关的操作是没有响应的,只有在正确的输入账户和密码后才进行相关操作!!
连接本地MongoDB数据库:(不用指定 绑定IP 和 端口号)
连接运程MongoDB数据库:(必须指定 绑定IP 和 端口号)
5、给指定的数据库存配置账户:
这里以 myweb 数据库为例,给myweb配置一个账户,注:各个不同的数据库之间,可以创建有一个 或 多个账户,各数据库之间账户、密码都是独立的,不能互相访问!
6、连接指定的MongoDB数据库
这里就用上面在 myweb数据库中创建的账户来演示 连接过程!
在命令窗口中连接:
在MongoDBCompass 可视化工具中连接:
上面就是MongoDB数据库的语法环境了,现在我们可以在命令窗口中执行一些MongoDB数据库的命令、语法啦!下面例出了一些常用的MongoDB数据库操作命令!
1、查看所有数据库:
2、查看当前所在数据库:
3、查看当前所在数据库中所有集合:
4、查看当前数据库相关信息(名称、文档个数、视图、索引、大小等):
5、创建、打开、切换 数据库:
use 这个命令很特殊:
use命令具有打开、 切换、 创建数据库的功能:
- 如果打开的这个数据库存在就是打开这个数据库。
- 如果打开的是一个不存在的数据库(没有这个数据库名字),那么就会创建一个同名的数据库。
注:在MongoDB中创建一个新的数据库时,需要向数据库中创建一个集合(collections【就像关系数据库中的表】),并且插入一条数据,这个数据库才能创建成功!!
如:往集合中插入一条数据。可以不用先创建集合,直接往里添加数据即可:
当命令执行后,数据库系统发现student是一个数据集合不存的,就自动创建一个集合,并随着数据的插入,数据库和集合也就真正的创建成功了。
6、删除数据库(注:这里是删除当前所在的数据库)
注:这个命令一定要慎用,一旦该命令一执行一下当前所在数据库中的所有数据都玩完了!!!,除非您想删库跑路,哈哈!!
7、清屏(这是Dos的命令,当窗口中的内容太多时,可以使用该命令,清除屏幕内容,保持界面清晰):
8、MongoDB 数据库备份与恢复,集合导入与导出:
MongoDB数据库的备份与恢复可直接在命令行工具中完成:
命令说明:
- mongodump : //数据库备份
- mongorestore: //数据库恢复(还原备份)
- mongoimport: //没集合导入
- mongoexport: //集合导出
参数说明:
- -h 数据库IP地址: //如果是当前本机数据库,可以去掉-h
- –port 端口号: //如果是默认端口,可以去掉–port
- -u 用户名: //如果没有用户,可以不用指定-u
- -p 密码: //如果没有密码,可以不用指定-p
- -d 或 -db 数据库名称: //如果不指定则导出所有数据库
- -c 集合名称
- -o 文件存在路径
- 注:每个参数前后是有空格的哦!!
–authenticationDatabase // 制定权限认证数据库,一般为 admin
–drop // 清空集合原有数据 慎用!!
–file xxx.json // 指定文件
注:除了用命令进行导入导出以外,还可以用MongoDB Compass(数据库图形管理工具)进行导入导出等操作!!
使用 mongodump命令来备份 MongoDB 数据。该命令可以导出所有数据到指定目录中。mongodump 命令可以通过参数指定导出的数据量级转存的服务器。
使用mongorestore命令来恢复备份的数据。
将JSON文件形式将数据导入到数据库 指定的集合中:
项目开发有时候需要一些测试数据,如一条条的insert在繁琐了。所以,我们可以在代码编辑器中以json格式编辑好要插入的数据,以.json文件格式保存,然后导入到数据库中:
下面就是将mydata.json文件,导入到test数据库的student集合中。
以JSON文件形式将数据库 指定的集合导出:
9、操作帮助命令(列出MongoDB数据库所有的操作方法)
MongoDB数据库是以文档形式存储的,我们可以根自己的项目需要,在各自不同的项目中,指定MongoDB数据库目录(如在Vue 或 React 项目的根目录,和 package.json文件同级的目录中,创建一个名为database的文件夹)中去创建MongoDB数据库的存储目录!
1、使用 mongod 命令: 创建 或 启动 指定的MongoDB数据库!
mongod这个命令很特殊,和use命令一样,如果指定的目录中有数据库就是启动,没有就是创建并启动!
2、如果mongodb数据库路径太长,要输入很久,还可这样做
3、注意事项:
启动成功后,一定不要关闭这个命令窗口,而且这个命令窗口中也不能再做其他操作了,然后就可以在MongoDB图形化管理工具中看查数据库 或 在项目中链接使用MongoDB数据库啦。
当然在有些时候,如果想要用命令行操作MongoDB数据库的话,就要再打开一个新Dos窗口!!!
输入mongo命令就进入了MongoDB数据库的语法环境了(一定要先启动MongoDB数据库后,在进行MongoDB数据库的操作)。
1、为什么要用复制集?
为了保证数据的安全,推荐使用复制集的方式来存储数据,一般复制集节点数至少要有3个,就相当于有3个MongoDB数据库,一主两从,这样一来,即便是当主节点宕机了,其他的从节点通过投票选举(所以,一般复制集节点数量不能是偶数,不然就会出现评局的状态),选出一个新的主节点出来继续工作,而且数据也不会丢失!!
当然如果非企业、公司的 或 数据不重要的,只是自己个人玩一下的话就用不着,主要看自己的需求。
2、在windows系统下搭建MongoDB复制集:
1、新建MongoDB复制集节点目录,如:在D盘下的MongoDB目录下,新建3个文件夹,分别命名为:db1,db2,db3 用于存放复制集节点
2、分别在db1,db2,db3这3个文件夹中新建一个文件命名为:mongod.conf 内容如下:
注意:
比如:db2目录下的mongod.conf 内容如下
3、启动复制集节点
注:由于windows系统不支持fork,以所要分别用不同的命令窗口来启动,如这里有3个复制集节点,所有就要开3个命令窗口来打开,这样就会启动3个mongodb进程,并且启动后不能关闭该命令窗口,否则进程也会随之结束!!
通过以上命令启动好3个复制集节点后,可以在命令窗口中查看,mongodb的进程情况
4、关联复制集节点
上面虽然创建了3个复制集节点,但它们之间还没有任何关系,还是相互独立的,所以要将们关联起来,当有数据入后3个节点都会有数据,这样一来,即便是当主节点宕机了,其他的从节点通过投票选举(所以,一般复制集节点数量不能是偶数,不然就会出现评局的状态),选出一个新的主节点出来继续工作,而且数据也不会丢失!!
- 再新开一个命令窗口操作,在windows系统中查看当前hostname 主机名
- 设置复制集主节点,在没有设置复制集主节点之前,各个节点都是一样平级的,但一般情况下,我们都将第1个端口号的节点做为主节点!
- 查看复制集节点状态信息 和 配置信息
- 分别关联端口为28018 和 28019 的这两个复制集节点
到此复制集节点的关联工作就完成了!
5、查看从节点是否正常同步数据
1、先在28017主节点上插入一条数据
writeConcern 数据写入配置:
注意:默认情况下插入数据时只要写入主节点(不管是否同步到从节点)就返回提示数据写入成功。
所以:如果要保证在写入数据时,所的的节点 或 指定的节点都落盘(成功写入)后,才返回提示数据写入成功。
writeConcern 决定一个写操作落到多少个节点上才算成功。writeConcern 的取值包括:
- 0 表示发起写操作,不关心是否成功;
- 1~集群最大数据节点数 表示写操作需要被复制到指定节点数才算成功;
- majority 表示写操作需要被复制到大多数节点上才算成功。 发起写操作的程序将阻塞到写操作到达指定的节点数为止
writeConcern注意事项:
- 虽然多于半数的 writeConcern 都是安全的,但通常只会设置 majority,因为这是 等待写入延迟时间最短的选择;
- 不要设置 writeConcern 等于总节点数,因为一旦有一个节点故障,所有写操作都 将失败;
- writeConcern 虽然会增加写操作延迟时间,但并不会显著增加集群压力,因此无论 是否等待,写操作最终都会复制到所有节点上。设置 writeConcern 只是让写操作 等待复制后再返回而已;
- 应对重要数据应用 {w: “majority”},普通数据可以应用 {w: 1} 以确保最佳性能;
2、在从节点28018 或 28019中查看是否有数据同步过来
1、什么是数据模型?
数据模型是一组由符号、文本组成的集合,用以准确表达信息,达到有效交流、沟通的目的。
2、数据模型的三要素:
实体、属性、关系
基础的建模实际上就是将实体、属性、关系三者进行要机的联关起来,其表达方式有:1:1 (一对一),1 :N (一对多),M :N (多对多),然后再根据范式NF 一般选用第三范式(3NF)来进行建模;
而在MongoDB的文档中基本上都可以用内嵌方式、数据方式来完成这些关系的表述,就不用像传统的关系型数据库去做分表存储啦!而且:MongoDB也可以进行分集合(表)存储的哦!!!;
上面这种处理方式虽然好用,但是 例如:当hobby子文档数据量很多时,数据就会很冗余,好的是MongoDB从3.2版开始也可以进行分集合(表),将hobby文档抽离成一个独立的集合user_hobby,然后进行关联查询!
通过引用方式 aggregate聚合框架中的 $lookup操作符 来进行关联查询
例如:users集合 和 user_hobby集合 将这两个集合进行关联查询
3、什么时候才应该使用引用方式(拆分集合(表)):
- 当内嵌文档(子文档)太大时,如数量很多 或 占用空间超过16MB时(目前最大限度16MB);
- 当内嵌文档 或 数组等元素会频繁更新修改时;
- 当内嵌数组中的元素数量是未知的(后期可以会持续增加,没有封顶)时;
4、MongoDB 引用是有限制的:
- MongoDB 对使用引用的集合之间并无主外键检查;
- MongoDB 使用聚合框架的 $lookup 来模仿关联查询;
- $lookup 只支持 left outer join
- $lookup 的关联目标(from)不能是分片集合(表);
数据模型的三层深度:
概念模型,逻辑模型,物理模型
传统数据库模型设计:从概念到逻辑到物理,它们之间其实就是从概念模型 到 物理模型 的一个逐步细化的过程!
5、MongoDB 文档模型设计的三个误区 :
- 不需要模型设计
- MongoDB 应该用一个超级大文档来组织所有数据
- MongoDB 不支持关联或者事务
所以严格来讲,MongoDB 同样需要概念/逻辑建模的,文档模型设计的物理层结构可以和逻辑层类似,可以省略物理建模的具体过程。
关系模型 VS 文档模型:
1、插入数据:insert()、insertOne()、insertMany()
语法:
db.<集合>.insertOne(<JSON对象>)
db.<集合>.insertMany([<JSON 1>,<JSON 2>,<JSON 3>,…])
注:插入数据时不需要专门去创建集合(表),因为插入数据时会自动创建集合!!
- 插入数据:这里以student集合【学生表】为例!
2、查找数据:find()、findOne()
语法:
db.<集合>.find(<查询条件>)
find()还支持合用 field.sub_field 的形式查询子文档
- 查找数据,如果find()中没有参数,那么将列出这个集合中的所有文档:注:find()返回的是游标
- 指定查询返回的字段 (例如:查询学生集合(表)中所有的女同学,不显示id,只显示名字 和 年龄 <字段名:0不显示,1显示>,或者:<字段名:false不显示,true显示>)
- 子文档查询
条件查询:
- 精确条件查询:
- 模糊条件查询:
- 条件查询对照:(MongoDB 与 传统数据库 比对)
逻辑查询:
- 多条件查询
- 逻辑与:$and
- 逻辑或:$or (只需满足1个条件),查找所有年龄是9岁,或者11岁的学生
- 查询逻辑对照:(MongoDB 与 传统数据库 比对)
聚合查询:
MongoDB聚合框架(Aggregation Framework)是一个计算框架,它可以:
- 可作用在一个 或 几个集合上
- 对集合中的数据进行一系列的运算
- 可将数据转化为所期望数据形式,如(数学计算,统计,类型,格式处理等)
对效果而言,聚合查询相录于传统SQL查询中的,ORDER BY,GROUP BY,LIMIT,LEFT OUTER JOIN,AS等!
- 聚合查询对照:(MongoDB 与 传统数据库 比对)
- 升降排序查找:(1 升序, -1 降序)
// 另一种and:[{“score”:60 , “age”:12}, {“score”:80 , “age”:15}]})
到此这篇mongodb数据库安装教程(mongodb4.2安装教程)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/sjkxydsj/64192.html