6.2 整合MongoDB

6.2 整合MongoDB

  • 1. MongoDB简介
  • 2. MongoDB安装
    • 2.1 下载
    • 2.2 配置MongoDB
    • 2.3 MongoDB的启动和关闭
      • 1. 启动MongoDB
      • 2. 关闭MogoDB
    • 2.4 安全管理
  • 3. 整合SpringBoot
    • 3.1 依赖
    • 3.2 MongoTemplate使用
    • 3.3 测试
      • 1. 新增
      • 2. 查询
      • 3. 删除
  • *****************************************************************************

1. MongoDB简介

MongoDB是一种面向文档的数据库管理系统,它是一个介于关系型数据库和非关系型数据库之间的产品,MongoDB功能丰富,它支持一种类似JSON的BSON数据格式既可以存储简单的数据格式,也可以存储复杂的数据类型
MongoDB最大的特点是它支持的查询语言非常强大,并且还支持对数据建立索引。总体来说,MongoDB是一款应用相当广泛的NoSQL数据库。

2. MongoDB安装

本案例使用的MongoDB版本为写作本书时的最新版本4.0.0,安装环境为CentOS 7。安装步骤如下。

2.1 下载

//1.下载MongoDB
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.0.tgz

在这里插入图片描述

//2.解压
tar -zxvf mongodb-linux-x86_64-4.0.0.tgz
//3.重命名
mv mongodb-linux-x86_64-4.0.0 mongodb

2.2 配置MongoDB

进入mongodb目录下,创建两个文件夹db和logs,分别用来保存数据和日志,代码如下:

cd mongodb
mkdir db
mkdir logs

然后进入bin目录下,创建一个新的MongoDB配置文件mongo.conf,文件内容如下:

dbpath=/opt/mongodb/db
logpath=/opt/mongodb/logs/mongodb.log port=27017
fork=true

在这里插入图片描述
配置解释:

  • 第1行配置表示数据存储目录。
  • 第2行配置表示日志文件位置。
  • 第3行配置表示启动端口。
  • 第4行配置表示以守护程序的方式启动MongoDB,即允许MongoDB在后台运行。

2.3 MongoDB的启动和关闭

1. 启动MongoDB

配置完成后,还是在bin目录下,运行如下命令启动MongoDB:

./mongod -f mongo.conf --bind_ip_all

-f 表示指定配置文件的位置,--bind_ip_all则表示允许所有的远程地址连接该MongoDB实例。
在这里插入图片描述
MongoDB启动成功后,在bin目录下再执行mongo命令,进入MongoDB控制台,然后输入db.version(),如果能看到MongoDB的版本号,就表示安装成功:

./mongo
db.version()

在这里插入图片描述

2. 关闭MogoDB

默认情况下,启动后连接的是MogoDB中的test库,而关闭MongoDB的命令需要在admin 库中执行,因此关闭MongoDB需要首先切换到admin库,然后执行db.shutdownServer();命令,完整操作步骤如下:

use admin;
db.shutdownServer();
exit

服务关闭后,执行exit命令退出控制台,此时如果再执行./mongo命令就会执行失败,如图6-14 所示。
图6-14

2.4 安全管理

默认情况下,启动的MongoDB没有登录密码,在生产环境中这是非常不安全的,但是不同于MySQL、Oracle等关系型数据库,MongoDB中每一个库都有独立的密码,在哪一个库中创建用户就要在哪一个库中验证密码。

要配置密码,首先要创建一个用户,例如在admin库中创建一个用户,代码如下:

use admin;
db.createUser({user:"admin",pwd:"Abc1234%",roles:[{role:"readWrite",db:"test"}]})

新创建的用户名为admin,密码是Abc1234%,roles表示该用户具有的角色,这里的配置表示该用户对test库具有读和写两项权限。
在这里插入图片描述

用户创建成功后,关闭当前实例

db.shutdownServer();
exit

然后重新启动,启动命令如下:

./mongod -f mongo.conf --bind_ip_all

启动成功后,再次进入控制台,然后切换到admin库中验证登录(默认连接上的库是test库),验证成功后就可以对test库执行读写操作了,代码如下:

./mongo
db.auth("admin","Abc1234%")

如果db.auth("admin","Abc1234%")命令执行结果为1,就表示认证成功,可以执行对test库的读写操作。
在这里插入图片描述

3. 整合SpringBoot

借助于SpringData MongoDB,SpringBoot为MongoDB也提供了开箱即用的自动化配置方案,具体配置步骤如下。

3.1 依赖

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

3.2 MongoTemplate使用

import com.mongodb.client.result.DeleteResult;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.system.domain.MdbBook;
import com.ruoyi.system.service.MdbService;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class MdbServiceImpl implements MdbService {
    @Resource
    private MongoTemplate mongoTemplate;

    /**
     * 根据作者查询书籍信息
     *
     * @param author
     * @return
     */
    @Override
    public List<MdbBook> findByAuthorContains(String author) {
        Query query = new Query();
        query.addCriteria(Criteria.where("author").is(author));
        return mongoTemplate.find(query, MdbBook.class, "book");
    }

    /**
     * 根据Id查询
     *
     * @param id
     * @return
     */
    @Override
    public MdbBook findById(String id) {
        return mongoTemplate.findById(id, MdbBook.class);
    }

    /**
     * 新增book
     *
     * @param book
     */
    @Override
    public void insertBook(MdbBook book) {
        book.setId(IdUtils.simpleUUID());
        mongoTemplate.insert(book, "book");
    }

    /**
     * id删除
     *
     * @param id
     */
    @Override
    public void delBookById(String id) {
        Query query = new Query();
        query.addCriteria(Criteria.where("_id").is(id));
        mongoTemplate.remove(query, "book");
    }
}

3.3 测试

在这里插入图片描述

1. 新增

在这里插入图片描述
在这里插入图片描述

2. 查询

在这里插入图片描述
在这里插入图片描述

3. 删除

在这里插入图片描述
删除朝花夕拾
在这里插入图片描述
在这里插入图片描述

*****************************************************************************

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/569380.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

sudo的设置

sudo指令就是提高你的用户权限&#xff0c;用来完成root可以完成的工作&#xff0c;但是有一个前提&#xff0c;就是被root添加到信任名单中&#xff0c;接下来我们要讲解如何在root中添加用户到信任名单中。 在root中输入指令&#xff1a; 即可到达添加信用列表的位置&#x…

读天才与算法:人脑与AI的数学思维笔记08_生物的创造力

1. 生物的创造力 1.1. 在进化树中是否有其他的物种已经具有与我们人类相当的创造力水平 1.2. 20世纪50年代中期&#xff0c;动物学家德斯蒙德莫里斯&#xff08;Desmond Morris&#xff09;在伦敦动物园做了这样一个试验 1.2.1. 动物学家给…

基于卷积神经网络的垃圾图像分类系统研究与实现

1.摘要 垃圾分类作为资源回收利用的重要环节之一, 可以有效地提高资源回收利用效率, 进一步减轻环境污染带来的危害. 随着现代工业逐步智能化, 传统的图像分类算法已经不能满足垃圾分拣设备的要求. 本文提出一种基于卷积神经网络的垃圾图像分类模型 (Garbage Classification Ne…

RF高频腔设计(7)

3.11 高阶模 之前我们说过&#xff0c;由于束流负载或者其它的原因会在RF高频腔中激发出很多模式&#xff0c;这些模式可能会对束流的稳定性造成不利的影响&#xff0c;尤其是腔的 R / Q ∗ Q L R/Q*Q_L R/Q∗QL​很高时。 为了解决这个问题&#xff0c;需要使用HOM阻尼器来抑…

数字化化转型中,人的重要性仍然不容忽视!

今日&#xff0c;蚓链多个数字化营销项目进行了复盘&#xff0c;最后数据显示&#xff1a;营销数据表现向上且居于高端的企业不仅仅是营销机制设置的科学、贴合市场&#xff0c;数据好的更主要原因还是体现在“人”&#xff01;是团队的构成科学合理&#xff0c;拿到好结果的大…

AWVS的使用

AWVS的使用 1、使用docker拉取AWVS的镜像 docker pull secfa/docker-awvs 2.使用AWVS docker run -it -d -p 13443:3443 --cap-add LINUX_IMMUTABLE secfa/docker-awvs 3.访问 4.输入账号密码 https://hub.docker.com/r/secfa/docker-awvs 找到账号密码 username:adminadmin.…

1W 1.5KVDC 3KVDC 隔离宽范围输入,单、双输出 DC/DC 电源模块——TP2L-1W 系列

TP2L-1W系列是一款高性能、超小型的电源模块&#xff0c;宽范围2&#xff1a;1,4:1输入&#xff0c;输出有稳压和连续短路保护功能&#xff0c;隔离电压为1.5KVDC&#xff0c;3KVDC工作温度范围为–40℃到85℃。特别适合对输出电压的精度有严格要求的地方&#xff0c;外部遥控功…

【Python】爬虫-基础入门

目录 一、什么是爬虫 二、爬虫的主要用途 三、学会爬虫需要掌握的技能 四、爬虫使用的语言 五、编写爬虫需要的库&#xff0c;以python为例 六、爬虫示例-python 示例一 示例二 示例三 一、什么是爬虫 爬虫&#xff0c;又称网络爬虫或网页爬虫&#xff0c;是一种用来自…

《智能前沿:应对ChatGPT算力挑战》

在全球人工智能热潮中&#xff0c;以 ChatGPT 为代表的 AIGC 技术引发了广泛关注。人工智能和机器学习等技术对数据规模及处理速度等提出了更高要求。在数据成为主要生产要素的当下和未来&#xff0c;如何跟上时代的发展步伐&#xff0c;构建适应 AI 需求的数据中心&#xff0c…

Keil和VSCode协同开发STM32程序

系列文章 STM32单片机系列专栏 C语言术语和结构总结专栏 文章目录 1. 配置环境 2. 测试打开工程 3. 测试编译工程 随着项目的复杂度上升&#xff0c;开发者不仅需要强大的硬件支持&#xff0c;还需要一个高效和灵活的开发环境。 vscode是一款集成大量可以便携开发插件的代码…

自动化软件测试策略

作为一名软件开发人员&#xff0c;我在不同的公司工作过&#xff0c;具有不同的软件测试流程。在大多数情况下&#xff0c;没有特定/记录的测试方法......因此该过程的内容/方式取决于各个开发人员。与大多数情况一样&#xff0c;当没有强制执行或至少记录在案的政策时&#xf…

齐护K210系列教程(七)_LCD显示数据

LCD显示数据 文章目录 LCD显示数据1&#xff0c;显示英文2&#xff0c;显示传感器的数值3&#xff0c;显示中文4&#xff0c;课程资源 联系我们 LCD的最大分辨率为320*240&#xff0c;所以当我们设置文字或图像坐标时&#xff0c;后面要记住这一点&#xff0c;当然&#xff0c;…

如何将web content项目导入idea并部署到tomcat

将Web Content项目导入IntelliJ IDEA并部署到Tomcat主要涉及以下几个步骤&#xff1a; 1. 导入Web Content项目 打开IntelliJ IDEA。选择“File” -> “New” -> “Project from Existing Sources…”。浏览到你的Web Content项目的文件夹&#xff0c;并选择它。Intell…

QA的成长之路——深入测试的奇妙之旅

引言 功能测试的小伙伴&#xff0c;你们是否遇到过这些问题&#xff1a; 1、工作中重复性很高&#xff1a;尽管尽可能地让一个 case 覆盖更多场景&#xff0c;但仍有许多重复性 case&#xff0c;耗费大量时间&#xff0c;让人感到枯燥疲惫&#xff1b; 2、覆盖度不全&#x…

Bitmap 原理简述

之前写过一篇 bitmap 应用场景的文章https://blog.csdn.net/maray/article/details/136923316 本文介绍 bitmap 的原理&#xff1a; 下面有三张表&#xff1a;user_info_base, user_prefer, user_device&#xff0c;我们希望查询“喜欢电子产品并且使用iPhone的女性用户”&…

食用油5G智能工厂数字孪生可视化平台,推进食品制造业数字化转型

食用油5G智能工厂数字孪生可视化平台&#xff0c;推进食品制造业数字化转型。在食用油产业中&#xff0c;数字化转型已成为提升生产效率、优化供应链管理、确保产品质量和满足消费者需求的关键。食用油5G智能工厂数字孪生可视化平台作为这一转型的重要工具&#xff0c;正在推动…

数据结构之顺序表(java版)

目录 一.线性表 1.1线性表的概念 二.顺序表 2.1顺序表的概念 2.2顺序表的实现 1.顺序表的接口 1.2顺序表的功能实现 1.顺序表初始化 2.新增元素功能&#xff1a; 3.清空顺序表是否为空&&获取顺序表长度&&打印顺序表&#xff1a; 4.判断是否包含某个…

关于开设YOLOv8专栏及更新内容的一些说明

​ 专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;助力高效涨点&#xff01;&#xff01;&#xff01; 专栏介绍 ⭐后期更新包含模块、卷积、检测头、损失等改进,目前已有70&#xff01;现在入手仅$ 69.9&#xff0c;早入早发论文&#xff01;⭐ ⭐…

【前端技术】HTML基础入门篇

1.1 HTML简介 ​ HTML&#xff08;HyperText Markup Language&#xff1a;超文本标记语言&#xff09;是一种标识性的语言。它包括一系列标签&#xff0e;通过这些标签可以将网络上的文档格式统一&#xff0c;使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组…

uView u-parse 在nvue页面中无作用踩坑

问题起因&#xff1a; 在uni-app开发的app nvue页面中有需要回显渲染字符串形式的富文本内容 但使用v-html和uniapp的rich-text组件都无法起到作用&#xff0c;就想到了使用uView中u-parse进行尝试。 uView我是使用uniApp插件市场导入的方式将插件导入项目的uni_modules中 …