【MongoDB】分布式数据库入门级学习

https://blog.csdn.net/LikewaterwithLi?spm=1011.2266.3001.5343
SueWakeup

 个人主页:SueWakeup

 系列专栏:为祖国的科技进步添砖Java

个性签名:保留赤子之心也许是种幸运吧

本文封面由 凯楠📸友情提供

凯楠📸 - 不夜长安


 目录

MongoDB%20%E7%9B%B8%E5%85%B3-toc" style="margin-left:0px;">MongoDB 相关

数据库排行榜单

MongoDB%20%E4%B8%AD%E6%96%87%E5%AE%98%E7%BD%91-toc" style="margin-left:40px;">MongoDB 中文官网

MongoDB-toc" style="margin-left:40px;"> 菜鸟教程 MongoDB

MongoDB%20%E5%AE%98%E6%96%B9%E8%AE%A4%E8%AF%81%C2%A0-toc" style="margin-left:40px;">MongoDB 官方认证 

MongoDB-toc" style="margin-left:0px;">什么是 MongoDB

​编辑发展历程

​编辑分布式

​编辑NoSQL

什么是分布式

分布式文件存储概述

CAP 定理

CAP理论的核心

什么是 NoSQL

NoSQL概述

ACID vs BASE

BASE理论的核心思想

MongoDB-toc" style="margin-left:0px;">为什么使用 MongoDB

MongoDB%20%E7%9A%84%E7%89%B9%E7%82%B9-toc" style="margin-left:40px;">MongoDB 的特点

解决 MySQL 的 “三高” 问题

MongoDB%20%E7%9A%84%E5%BA%94%E7%94%A8%E5%9C%BA%E6%99%AF-toc" style="margin-left:40px;">MongoDB 的应用场景

MongoDB%20%E7%9A%84%E5%AE%9E%E9%99%85%E5%BA%94%E7%94%A8-toc" style="margin-left:40px;">MongoDB 的实际应用

MongoDB-toc" style="margin-left:0px;">如何使用 MongoDB

MongoDB-toc" style="margin-left:40px;">安装 MongoDB

​编辑rpm 安装

1. 点击下方网址找到相应的系统安装 rpm 软件包。

2. 创建空目录/opt/mongodb用来存放安装包,使用 Xftp 或者 FinShell 将软件包上传。

3. 使用 rpm –ivh [软件包名] 依次下载 mongos、server、shell。 

​编辑

  ​编辑rpm 卸载

MongoDB%20%E6%9C%8D%E5%8A%A1%E3%80%82-toc" style="margin-left:120px;">1. 使用 systemctl stop mongod 停止 MongoDB 服务。

2. 使用 rpm –qa |grep mongodb 查找安装的包。

MongoDB%20%E7%9A%84%E5%8C%85%E3%80%82-toc" style="margin-left:120px;">3. 分别使用 rpm –e mongodb-org-shell(mongos、server)删除关于MongoDB 的包。

MongoDB%20%E7%9A%84%E6%95%B0%E6%8D%AE%E7%9B%AE%E5%BD%95%E3%80%82%EF%BC%88%E6%B3%A8%EF%BC%9A%E7%B3%BB%E7%BB%9F%E4%BC%9A%E5%A4%9A%E6%AC%A1%E6%8F%90%E7%A4%BA%E6%98%AF%E5%90%A6%E5%88%A0%E9%99%A4%EF%BC%8C%E5%8F%AF%E4%BD%BF%E7%94%A8%20rm%20%E2%80%93f%20%E5%91%BD%E4%BB%A4%E5%BC%BA%E5%88%B6%E5%88%A0%E9%99%A4%EF%BC%8C%E4%B8%8D%E4%BC%9A%E5%BC%B9%E5%87%BA%E5%A4%9A%E6%AC%A1%E8%AF%A2%E9%97%AE%EF%BC%8C%E8%B0%A8%E6%85%8E%E4%BD%BF%E7%94%A8%EF%BC%89-toc" style="margin-left:120px;">4. 使用 rm -r /var/lib/mongo 删除 MongoDB 的数据目录。(注:系统会多次提示是否删除,可使用 rm –f 命令强制删除,不会弹出多次询问,谨慎使用)

MongoDB%20%E7%9A%84%E6%97%A5%E5%BF%97%E8%AE%B0%E5%BD%95%E3%80%82-toc" style="margin-left:120px;">5. 使用 rm -r /var/log/mongodb 删除 MongoDB 的日志记录。

MongoDB%20%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%EF%BC%8C%E5%89%8D%E4%B8%A4%E6%9D%A1%E5%91%BD%E4%BB%A4%E4%BC%9A%E5%B0%86%E6%96%87%E4%BB%B6%E7%A7%BB%E8%87%B3%20%2Fetc%20%E7%9B%AE%E5%BD%95%E4%B8%8B%EF%BC%8C%E5%A6%82%E4%B8%8B%E5%9B%BE%E6%89%80%E7%A4%BA%E3%80%82-toc" style="margin-left:120px;">6. 使用 rm /etc/mongod.conf 删除 MongoDB 的配置文件,前两条命令会将文件移至 /etc 目录下,如下图所示。

7. 使用 systemctl status mongod 检验成果。

  ​编辑yum 安装

MongoDB%20%E7%9A%84%20GPA%20%E5%85%AC%E9%92%A5%EF%BC%8C%E7%A1%AE%E4%BF%9D%E4%B8%8B%E8%BD%BD%E7%9A%84%E5%AE%89%E8%A3%85%E5%8C%85%E6%98%AF%E5%AE%98%E6%96%B9%E7%9A%84%E3%80%82-toc" style="margin-left:120px;">1. 使用 rpm --import https://www.mongodb.org/static/pgp/server-4.4.asc 导入 MongoDB 的 GPA 公钥,确保下载的安装包是官方的。

MongoDB%204.4%20%E7%89%88%E6%9C%AC%E7%9A%84%E4%BB%93%E5%BA%93%E9%85%8D%E7%BD%AE%E3%80%82-toc" style="margin-left:120px;">2. 使用 vi /etc/yum.repos.d/mongodb-org-4.4.repo 编辑MongoDB 4.4 版本的仓库配置。

MongoDB%E3%80%82-toc" style="margin-left:120px;">3. 使用 yum install -y mongodb-org 安装 MongoDB

​编辑4. 安装成功后使用 systemctl start mongod 启动服务并使用 systemctl status mongod 查看服务状态。

​编辑yum 卸载

1. 使用 systemctl stop mongod 停止服务。

2. 使用 yum remove mongodb-org* 卸载之前安装的包。

MongoDB%20%E7%9A%84%E6%95%B0%E6%8D%AE%E7%9B%AE%E5%BD%95%E5%92%8C%E6%97%A5%E5%BF%97%E8%AE%B0%E5%BD%95%E3%80%82-toc" style="margin-left:120px;">3. 分别使用 rm -r /var/lib/mongodb 和 rm -r /var/log/mongodb 删除 MongoDB 的数据目录和日志记录。

4. 卸载完成后使用 systemctl status mongod 检查成果。​编辑

​编辑docker 安装

1. 使用 systemctl start docker 启动 Docker。

MongoDB%20%E9%95%9C%E5%83%8F%E3%80%82-toc" style="margin-left:120px;">2. 使用 docker pull mongo:4.4 或 latest 拉取 MongoDB 镜像。

MongoDB%20%E5%AE%B9%E5%99%A8%E3%80%82-toc" style="margin-left:120px;">3. 使用 docker run --name 【容器名】 -d mongo 运行 MongoDB 容器。

MongoDB%20%E7%9A%84%20Shell%E3%80%82-toc" style="margin-left:120px;">4. 使用 docker exec -it 【容器名】 mongo 进入 MongoDB 的 Shell。

​编辑docker 卸载

1. 使用 docker ps 查看当前正在运行的容器。

2. 使用 docker stop 【容器名】停止容器的运行。

3. 使用 docker rm 【容器名】删除容器。

4. 使用 docker ps –-all 查看所有容器。

MongoDB-toc" style="margin-left:40px;">配置 MongoDB

1. 使用 systemctl start mongod.service 启动服务。默认无认证登录方式。

2. 使用 systemctl status mongod.service 查看服务状态。 

MongoDB%20%E7%9A%84%20%E3%80%90admin%E3%80%91%E6%95%B0%E6%8D%AE%E5%BA%93%E3%80%82%E6%B2%A1%E6%9C%89%E6%8C%87%E5%AE%9A%E6%95%B0%E6%8D%AE%E5%BA%93%EF%BC%8CMongoDB%20%E4%BC%9A%E4%BD%BF%E7%94%A8%E4%B8%80%E4%B8%AA%E5%90%8D%E4%B8%BA%E3%80%90test%E3%80%91%E7%9A%84%E9%BB%98%E8%AE%A4%E6%95%B0%E6%8D%AE%E5%BA%93%EF%BC%8C%E8%AF%A5%E6%95%B0%E6%8D%AE%E5%BA%93%E5%AD%98%E5%82%A8%E5%9C%A8%20data%20%E7%9B%AE%E5%BD%95%E4%B8%AD%E3%80%82-toc" style="margin-left:120px;">3. 使用 mongo admin 进入 MongoDB 的 【admin】数据库。没有指定数据库MongoDB 会使用一个名为【test】的默认数据库,该数据库存储在 data 目录中。

4. 进入成功后在最后一行使用 “>”表示命令行光标起始位置。

5. 输入db.createUser({user:'mongoAdmin',pwd:'123456',roles:[{role:'userAdminAnyDatabase',db:'admin'},'readWriteAnyDatabase']})创建用户

6. “user”是新用户的名称,“pwd”是密码。

7. “role”是权限,“db”是数据库名。如“role”:“readWrite”,“db”:“myDatabase”是对“myDatabase”数据库具有读写权限。

8. 常见的 db:admin(管理用户和角色)、local(存储本地集合)、config(存储分片集群的配置信息)。

9. 使用 db.getUsers() 查看当前系统上的所有用户信息。

10. 使用 db.auth(‘用户名’,‘密码’)进行认证,成功返回“1”。注:开启登录认证后,需要使用 mongo admin 进入【admin】数据库才可以使用 db.auth 命令进行登录。

MongoDB%20%E8%BF%9B%E7%A8%8B%E3%80%82-toc" style="margin-left:120px;">11. 使用 ctrl + c 退出 MongoDB 进程。

12. 删除用户命令:db.dropUser(‘用户名’)

开启登录认证与远程登录

MongoDB%20%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E3%80%82-toc" style="margin-left:120px;">1. 在 Linux 命令行输入 vi /etc/mongod.conf 进入 MongoDB 的配置文件。

2. 找到 network 配置与 security 配置,配置效果如下图所示。

3. 保存后,使用 systemctl restart mongod.service、systemctl status mongod.service 重启 mongoDB服务

4. 开启登录认证后的成功案例,认证后使用 db.getUsers() 验证是否登录。

5. 失败案例,提示权限不足。

MongoDB-toc" style="margin-left:80px;">​编辑docker 配置 MongoDB

使用环境变量配置

使用配置文件 mongod.conf

GUI 可视化界面

 远程登录说明

1. 使用上方网址下载图形界面化软件。

MongoDB%20%E7%9A%84%E7%BD%91%E7%BB%9C%E6%8E%A5%E5%8F%A3%E5%92%8C%E7%99%BB%E5%BD%95%E8%AE%A4%E8%AF%81%E3%80%82-toc" style="margin-left:160px;">2. 在 Linux 系统中已经配置好 MongoDB 的网络接口和登录认证。

 3. Linux 的网卡配置中有仅主机模式。

MongoDB%20%E7%9A%84%20CURD-toc" style="margin-left:40px;">MongoDB 的 CURD

MongoDB%20%E6%A6%82%E5%BF%B5%E8%A7%A3%E6%9E%90-toc" style="margin-left:80px;">MongoDB 概念解析

Create 创建

Update 更新

Read 读取

Delete 删除

MongoDB-toc" style="margin-left:40px;">Java 连接 MongoDB

1. 添加 Maven 仓库依赖坐标

2. 创建 MondoDBConn.java 工具类

手机端浏览本文章可能会出现 “目录”无法有效展示的情况,还请谅解! 


MongoDB%20%E7%9B%B8%E5%85%B3">MongoDB 相关


数据库排行榜单

网址:https://db-engines.com/en/ranking
数据库排行表单

===》》》数据库排行榜单《《《===icon-default.png?t=N7T8https://db-engines.com/en/ranking


MongoDB%20%E4%B8%AD%E6%96%87%E5%AE%98%E7%BD%91">MongoDB 中文官网

网址:https://mongodb.net.cn/manual/tutorial/insert-documents/
MongoDB 中文官网

===》》》MongoDB 中文官网《《《===icon-default.png?t=N7T8https://mongodb.net.cn/manual/tutorial/insert-documents/


MongoDB"> 菜鸟教程 MongoDB

网址:https://www.runoob.com/mongodb/mongodb-intro.html
菜鸟教程 MongoDB

===》》》菜鸟教程 MongoDB《《《===icon-default.png?t=N7T8https://www.runoob.com/mongodb/mongodb-intro.html


MongoDB%20%E5%AE%98%E6%96%B9%E8%AE%A4%E8%AF%81%C2%A0">MongoDB 官方认证 

MongoDB 官方认证

===》》》官方认证《《《===

===》》》关于认证的那些事《《《===


MongoDB">什么是 MongoDB

百度百科 - mongodb

发展历程

  • 2007年10月,MongoDB由10gen团队所发展。2009年2月首度推出。
  • 2012年06月06日,MongoDB 2.0.6 发布,分布式文档数据库
  • 截至2024年4月23日,MongoDB 社区版的最新版本为 7.0.8 。

分布式

  • 由C++语言编写,基于分布式文件存储的数据库。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

NoSQL


什么是分布式


分布式文件存储概述

  • 分布式系统是由多个独立计算机(通常是网络上的计算机)组成的系统,这些计算机通过网络进行通信和协作,以共同完成某个任务或提供某种服务。
  • 分布式文件存储是分布式系统的一种应用,与传统的集中式文件系统相比,分布式文件存储具有更高的可扩展性容错性

一文读懂分布式架构知识体系(内含超全核心知识大图)icon-default.png?t=N7T8https://developer.aliyun.com/article/721007#slide-1

SueWakeup - 神马是分布式?


CAP 定理

图片来源: w3resource

CAP 定理又称布鲁尔定理,对于一个分布式系统而言,不可能同时满足以下三点:

  • 一致性(Consistency):所有节点在同一时间具有相同的数据。
  • 可用性(Availability):保证每个请求不管成功或者失败都有响应。
  • 分区容错性(Partition tolerance):系统中任意信息的丢失或失败不会影响系统的继续运作。

CAP理论的核心
  • 一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。

w3resource - NoSQLicon-default.png?t=N7T8https://www.w3resource.com/mongodb/nosql.php


什么是 NoSQL

数据库的分类

NoSQL概述

  • NoSQL,指的是非关系型的数据库。也可认作是 Not Only SQL 的缩写,意为不仅限于 SQL。
  • 2009年在亚特兰大举行的"no:sql(east)"讨论会是一个里程碑,其口号是" select fun, profit from real_world where relational=false; "。因此,对NoSQL最普遍的解释是"非关联型的",强调Key-Value Stores和文档数据库的优点,而不是单纯的反对RDBMS

ACID vs BASE

ACID

BASE

原子性(Atomicity)

基本可用(Basically Available)

一致性(Consistency)

软状态/柔性事务(Soft state)

隔离性(Isolation)

最终一致性 (Eventual consistency)

持久性 (Durable)

  • 原子性:事务是数据库的最小执行单元,事务的原子性确保数据库操作过程中的所有步骤全部成功或者全部失败
  • 一致性:数据修改前和修改后的状态保持一致
  • 隔离性:一个事务的执行不会被其他事务干扰,一个事务内部的操作和使用的数据,在并发中对其他事务是隔离的
  • 持久性:事务一旦被提交,将对数据库中的数据的改变是永久性的

BASE理论的核心思想

        在分布式系统中,由于网络延迟、节点故障等因素,数据的一致性可能无法实时保证,但是可以保证数据的最终一致性。


MongoDB">为什么使用 MongoDB


MongoDB%20%E7%9A%84%E7%89%B9%E7%82%B9">MongoDB 的特点

  • 业务并发访问量大
  • 存储的数据格式灵活,不固定,或属于半结构化数据
  • TB级以上的海量数据存储,且数据量不断增加
  • 无需要跨文档或跨表的事务及复杂的join查询支持

解决 MySQL 的 “三高” 问题

  1. 数据库高并发写入需求
  2. 对海量数据高效率存储访问需求
  3. 数据库高扩展和高可用的需求

MongoDB%20%E7%9A%84%E5%BA%94%E7%94%A8%E5%9C%BA%E6%99%AF">MongoDB 的应用场景

  1. 社交场景,比如朋友圈,附近的人的地点的存储
  2. 游戏场景,比如用户当前装备,得分等
  3. 物流场景,比如快递的位置,状态,途径
  4. 视频场景,比如直播中的点赞数和互动留言等

MongoDB%20%E7%9A%84%E5%AE%9E%E9%99%85%E5%BA%94%E7%94%A8">MongoDB 的实际应用

  • 纽约时报,领先的在线新闻门户网站之一
  • CERN,著名的粒子物理研究所,欧洲核子研究中心大型强子对撞机的数据使用 MongoDB
  • spike.com,一个音乐电视网络的联营公司, spike.com使用的 MongoDB

MongoDB">如何使用 MongoDB


MongoDB">安装 MongoDB

  • Linux CentOS 7 操作系统下的三种安装方式

rpm 安装

  • 预先编译好的二进制软件包,不会自动处理软件包之间的依赖关系,会报错,提示缺少依赖需手动安装依赖项,过程繁琐。
1. 点击下方网址找到相应的系统安装 rpm 软件包。

MongoDB官方下载icon-default.png?t=N7T8https://www.mongodb.com/try/download/community

2. 创建空目录/opt/mongodb用来存放安装包,使用 Xftp 或者 FinShell 将软件包上传。

3. 使用 rpm –ivh [软件包名] 依次下载 mongos、server、shell。 

  rpm 卸载

MongoDB%20%E6%9C%8D%E5%8A%A1%E3%80%82">1. 使用 systemctl stop mongod 停止 MongoDB 服务。
2. 使用 rpm –qa |grep mongodb 查找安装的包。
MongoDB%20%E7%9A%84%E5%8C%85%E3%80%82">3. 分别使用 rpm –e mongodb-org-shell(mongos、server)删除关于MongoDB 的包。
MongoDB%20%E7%9A%84%E6%95%B0%E6%8D%AE%E7%9B%AE%E5%BD%95%E3%80%82%EF%BC%88%E6%B3%A8%EF%BC%9A%E7%B3%BB%E7%BB%9F%E4%BC%9A%E5%A4%9A%E6%AC%A1%E6%8F%90%E7%A4%BA%E6%98%AF%E5%90%A6%E5%88%A0%E9%99%A4%EF%BC%8C%E5%8F%AF%E4%BD%BF%E7%94%A8%20rm%20%E2%80%93f%20%E5%91%BD%E4%BB%A4%E5%BC%BA%E5%88%B6%E5%88%A0%E9%99%A4%EF%BC%8C%E4%B8%8D%E4%BC%9A%E5%BC%B9%E5%87%BA%E5%A4%9A%E6%AC%A1%E8%AF%A2%E9%97%AE%EF%BC%8C%E8%B0%A8%E6%85%8E%E4%BD%BF%E7%94%A8%EF%BC%89">4. 使用 rm -r /var/lib/mongo 删除 MongoDB 的数据目录。(注:系统会多次提示是否删除,可使用 rm –f 命令强制删除,不会弹出多次询问,谨慎使用)

MongoDB%20%E7%9A%84%E6%97%A5%E5%BF%97%E8%AE%B0%E5%BD%95%E3%80%82">5. 使用 rm -r /var/log/mongodb 删除 MongoDB 的日志记录。

MongoDB%20%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%EF%BC%8C%E5%89%8D%E4%B8%A4%E6%9D%A1%E5%91%BD%E4%BB%A4%E4%BC%9A%E5%B0%86%E6%96%87%E4%BB%B6%E7%A7%BB%E8%87%B3%20%2Fetc%20%E7%9B%AE%E5%BD%95%E4%B8%8B%EF%BC%8C%E5%A6%82%E4%B8%8B%E5%9B%BE%E6%89%80%E7%A4%BA%E3%80%82">6. 使用 rm /etc/mongod.conf 删除 MongoDB 的配置文件,前两条命令会将文件移至 /etc 目录下,如下图所示。

7. 使用 systemctl status mongod 检验成果。


  yum 安装

  • 自动化软件的安装、更新、配置和移除,无需担心依赖关系或手动下载和安装软件包。yum 保存的是 rpm 包。

MongoDB%20%E7%9A%84%20GPA%20%E5%85%AC%E9%92%A5%EF%BC%8C%E7%A1%AE%E4%BF%9D%E4%B8%8B%E8%BD%BD%E7%9A%84%E5%AE%89%E8%A3%85%E5%8C%85%E6%98%AF%E5%AE%98%E6%96%B9%E7%9A%84%E3%80%82">1. 使用 rpm --import https://www.mongodb.org/static/pgp/server-4.4.asc 导入 MongoDB 的 GPA 公钥,确保下载的安装包是官方的。
MongoDB%204.4%20%E7%89%88%E6%9C%AC%E7%9A%84%E4%BB%93%E5%BA%93%E9%85%8D%E7%BD%AE%E3%80%82">2. 使用 vi /etc/yum.repos.d/mongodb-org-4.4.repo 编辑MongoDB 4.4 版本的仓库配置。

MongoDB%E3%80%82">3. 使用 yum install -y mongodb-org 安装 MongoDB
4. 安装成功后使用 systemctl start mongod 启动服务并使用 systemctl status mongod 查看服务状态。


yum 卸载

1. 使用 systemctl stop mongod 停止服务。
2. 使用 yum remove mongodb-org* 卸载之前安装的包。
MongoDB%20%E7%9A%84%E6%95%B0%E6%8D%AE%E7%9B%AE%E5%BD%95%E5%92%8C%E6%97%A5%E5%BF%97%E8%AE%B0%E5%BD%95%E3%80%82">3. 分别使用 rm -r /var/lib/mongodb 和 rm -r /var/log/mongodb 删除 MongoDB 的数据目录和日志记录。
4. 卸载完成后使用 systemctl status mongod 检查成果。

docker 安装

  • 侧重于整个应用环境的管理,以容器的形式封装、部署应用程序。docker 镜像仓库保存的是 docker 镜像。

1. 使用 systemctl start docker 启动 Docker。
MongoDB%20%E9%95%9C%E5%83%8F%E3%80%82">2. 使用 docker pull mongo:4.4 或 latest 拉取 MongoDB 镜像。

MongoDB%20%E5%AE%B9%E5%99%A8%E3%80%82">3. 使用 docker run --name 【容器名】 -d mongo 运行 MongoDB 容器。
MongoDB%20%E7%9A%84%20Shell%E3%80%82">4. 使用 docker exec -it 【容器名】 mongo 进入 MongoDB 的 Shell。


docker 卸载

1. 使用 docker ps 查看当前正在运行的容器。
2. 使用 docker stop 【容器名】停止容器的运行。
3. 使用 docker rm 【容器名】删除容器。
4. 使用 docker ps –-all 查看所有容器。


MongoDB">配置 MongoDB

  • 不同的配方,同样的味道~

1. 使用 systemctl start mongod.service 启动服务。默认无认证登录方式。
2. 使用 systemctl status mongod.service 查看服务状态。 

MongoDB%20%E7%9A%84%20%E3%80%90admin%E3%80%91%E6%95%B0%E6%8D%AE%E5%BA%93%E3%80%82%E6%B2%A1%E6%9C%89%E6%8C%87%E5%AE%9A%E6%95%B0%E6%8D%AE%E5%BA%93%EF%BC%8CMongoDB%20%E4%BC%9A%E4%BD%BF%E7%94%A8%E4%B8%80%E4%B8%AA%E5%90%8D%E4%B8%BA%E3%80%90test%E3%80%91%E7%9A%84%E9%BB%98%E8%AE%A4%E6%95%B0%E6%8D%AE%E5%BA%93%EF%BC%8C%E8%AF%A5%E6%95%B0%E6%8D%AE%E5%BA%93%E5%AD%98%E5%82%A8%E5%9C%A8%20data%20%E7%9B%AE%E5%BD%95%E4%B8%AD%E3%80%82">3. 使用 mongo admin 进入 MongoDB 的 【admin】数据库。没有指定数据库MongoDB 会使用一个名为【test】的默认数据库,该数据库存储在 data 目录中。
4. 进入成功后在最后一行使用 “>”表示命令行光标起始位置。
5. 输入db.createUser({user:'mongoAdmin',pwd:'123456',roles:[{role:'userAdminAnyDatabase',db:'admin'},'readWriteAnyDatabase']})
创建用户

6. “user”是新用户的名称,“pwd”是密码。
7. “role”是权限,“db”是数据库名。如“role”:“readWrite”,“db”:“myDatabase”是对“myDatabase”数据库具有读写权限。
8. 常见的 db:admin(管理用户和角色)、local(存储本地集合)、config(存储分片集群的配置信息)。

9. 使用 db.getUsers() 查看当前系统上的所有用户信息。
10. 使用 db.auth(‘用户名’,‘密码’)进行认证,成功返回“1”。注:开启登录认证后,需要使用
 mongo admin 进入【admin】数据库才可以使用 db.auth 命令进行登录。
MongoDB%20%E8%BF%9B%E7%A8%8B%E3%80%82">11. 使用 ctrl + c 退出 MongoDB 进程。

12. 删除用户命令:db.dropUser(‘用户名’)

开启登录认证与远程登录

MongoDB%20%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E3%80%82">1. 在 Linux 命令行输入 vi /etc/mongod.conf 进入 MongoDB 的配置文件。

2. 找到 network 配置与 security 配置,配置效果如下图所示。

3. 保存后,使用 systemctl restart mongod.service、systemctl status mongod.service 重启 mongoDB服务
4. 开启登录认证后的成功案例,认证后使用 db.getUsers() 验证是否登录。

5. 失败案例,提示权限不足。


MongoDB">docker 配置 MongoDB

使用环境变量配置
  • 设置初始的 root 用户、密码、数据库
docker run --name some-mongo -d \
  -e MONGO_INITDB_ROOT_USERNAME=admin \
  -e MONGO_INITDB_ROOT_PASSWORD=password \
  -e MONGO_INITDB_DATABASE=mydatabase \
  mongo
使用配置文件 mongod.conf
  • 挂载自定义的 mongod.conf 到容器中实现配置
docker run --name some-mongo -d \
  -v /etc/mongo/mongod.conf:/etc/mongo/mongod.conf \
  -v /data/db:/data/db \
  mongo --config /etc/mongo/mongod.conf

GUI 可视化界面

  • 充分展现与 SQL 的不同

 远程登录说明

studio3t官方下载icon-default.png?t=N7T8https://studio3t.com/

1. 使用上方网址下载图形界面化软件。
MongoDB%20%E7%9A%84%E7%BD%91%E7%BB%9C%E6%8E%A5%E5%8F%A3%E5%92%8C%E7%99%BB%E5%BD%95%E8%AE%A4%E8%AF%81%E3%80%82">2. 在 Linux 系统中已经配置好 MongoDB 的网络接口和登录认证。

 3. Linux 的网卡配置中有仅主机模式。

MongoDB%20%E7%9A%84%20CURD">MongoDB 的 CURD

  • 常用语法

MongoDB%20%E6%A6%82%E5%BF%B5%E8%A7%A3%E6%9E%90">MongoDB 概念解析

MongoDB 与 MySQL 比较

图片来源于:菜鸟教程
表格来源于:菜鸟教程
图片来源于:菜鸟教程
  • 文档的数据结构和 JSON 基本一样。
  • 所有存储在集合中的数据都是 BSON 格式。
  • BSON 是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称。

Create 创建

创建数据库:use dbname
如果数据库不存在,则创建数据库,否则切换到指定数据库。
在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档
(记录),集合才会真正创建。
通过 db 来查看当前使用的数据库
创建集合:db.createCollection(“集合名”)
插入文档:db.集合名.insert(document) || db.集合名.save(document)

Update 更新

更新文档:db.集合名.update({查询条件},{$set:{更新内容}},
  {
   upsert: <boolean>,
   multi: <boolean>,
  }
)
upsert: 默认为false ,如果查询不到数据,则把跟新输入插入
multi:默认为false,默认只改一条,true,更改多条

Read 读取

查看所有数据库:show dbs
admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合。
config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。
查看集合:show collections / show tables
删除文档:db.集合名称.remove( , { justOne: } ) 
非结构化显示所有文档:db.collection.find(query) 
格式化显示所有文档:db.col.find().pretty()

Delete 删除

删除当前数据库:db.dropDatabase()
删除集合:db.集合名.drop()
删除文档:db.collection.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>
   }
)
query :(可选)删除的文档的条件。
justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
writeConcern :(可选)抛出异常的级别。


MongoDB">Java 连接 MongoDB

1. 添加 Maven 仓库依赖坐标
 <!-- https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver -->
		<dependency>
		    <groupId>org.mongodb</groupId>
		    <artifactId>mongo-java-driver</artifactId>
		    <version>3.4.2</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.mongodb/bson -->
		<dependency>
		    <groupId>org.mongodb</groupId>
		    <artifactId>bson</artifactId>
		    <version>4.2.3</version>
		</dependency>
	<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
		<dependency>
		    <groupId>com.google.code.gson</groupId>
		    <artifactId>gson</artifactId>
		    <version>2.8.9</version>
		</dependency>
2. 创建 MondoDBConn.java 工具类
import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoIterable;

public class MongoConn {

	public static MongoClient mc =null;
	public static MongoDatabase db = null;

	//测试用例
	public static void main(String[] args) {
		GetConn();
		//获取库中集合
		MongoIterable<String> collist = db.listCollectionNames();
				
		for(String s:collist) {
			System.out.println("mongo数据库中的集合:"+s);
		}
		ConnClose();
	}

	//连接数据库
	public static void GetConn() {
		mc =new MongoClient("localhost",27017);
		db = mc.getDatabase("Device");
		
		
	}

	//关闭连接
	public static void ConnClose() {
		mc.close();
	}
}


http://www.niftyadmin.cn/n/5535350.html

相关文章

工厂自动化相关设备工业一体机起到什么作用?

在当今的制造业领域&#xff0c;工厂自动化已成为提高生产效率、保证产品质量和降低成本的关键。在这一进程中&#xff0c;工业一体机作为一种重要的设备&#xff0c;发挥着不可或缺的作用。 工业一体机是自动化生产线上的控制中心。它能够整合和处理来自各个传感器、执行器和其…

【全网最全】2024年APMCM第十四届亚太地区大学生数学建模竞赛(中文赛项)完整思路解析+代码+论文

我是Tina表姐&#xff0c;毕业于中国人民大学&#xff0c;对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在&#xff0c;我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…

基于RK3588的GMSL、FPDLink 、VByone及MIPI等多种摄像模组,适用于车载、机器人工业图像识别领域

机器人&工业摄像头 针对机器人视觉与工业检测视觉&#xff0c;信迈自主研发和生产GMSL、FPDLink 、VByone及MIPI等多种摄像模组&#xff0c;并为不同应用场景提供多种视场角度和镜头。拥有资深的图像算法和图像ISP专家团队&#xff0c;能够在软件驱动层开发、ISP算法、FPG…

16、matlab求导、求偏导、求定积分、不定积分、数值积分和数值二重积分

0&#xff09;前言 在MATLAB中&#xff0c;对函数进行不同形式的求导、求积分操作是非常常见的需求&#xff0c;在工程、科学等领域中经常会用到。以下是关于求导、求积分以及数值积分的简介&#xff1a; 求导&#xff1a;在MATLAB中可以使用diff函数对函数进行求导操作。diff…

安装 VisualSVN Server提示HTTP服务无法启动的问题解决

安装 VisualSVN Server 版本&#xff1a;VisualSVN-Server-5.4.0-x64 安装包在安装到一半的时候&#xff0c;弹窗提示&#xff1a;HTTP服务无法启动&#xff0c;网上找了一大堆&#xff0c;说是service里面更改用户为本地用户什么的都没用用&#xff0c;点右键也无法启动。 …

前端框架基础——Vue.js

目录 一、第一个Vue项目 1.创建Vue 2.详细解读 二、Vue指令 1.v-text、v-html 2.v-on 3.v-model 4.v-show、v-if 5.v-bind 6.v-for 三、Vue实例生命周期 Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是&am…

【深度学习】GPU版本

我发现nvidia-smi的cuda版本不是我期望镜像中的版本&#xff0c;咨询一下还要选择对应的驱动&#xff0c;比如cuda12.2对应的 {"12.3": "525.60","12.2": "525.60","12.1": "525.60","12.0": "52…

深入理解pytest fixture:提升测试的灵活性和可维护性!

在现代软件开发中&#xff0c;测试是保证代码质量的重要环节。pytest作为一个强大的测试框架&#xff0c;以其灵活的fixture系统脱颖而出。本文将详细介绍pytest中的fixture概念&#xff0c;通过具体案例展示其应用&#xff0c;并说明如何利用fixture提高测试的灵活性和可维护性…