6.2 整合MongoDB

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. 删除

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

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

相关推荐

  1. Spring之xml配置方式快速整合MongoDB

    2024-04-24 06:22:01       27 阅读
  2. Spring Boot 整合 MongoDB:构建高效的数据驱动应用

    2024-04-24 06:22:01       20 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-24 06:22:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-24 06:22:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-24 06:22:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-24 06:22:01       20 阅读

热门阅读

  1. 【八股】Redis篇

    2024-04-24 06:22:01       12 阅读
  2. 代码随想录(番外)图论2

    2024-04-24 06:22:01       12 阅读
  3. Python自动化系列---Python基础

    2024-04-24 06:22:01       15 阅读
  4. 本地存储、自定义事件、全局事件总线

    2024-04-24 06:22:01       12 阅读
  5. Node.js在前端的妙用:打造更出色的Web体验

    2024-04-24 06:22:01       14 阅读
  6. Halide 高效的图像处理语言 简化图像编程

    2024-04-24 06:22:01       14 阅读
  7. 【Kotlin】Flow简介

    2024-04-24 06:22:01       15 阅读
  8. python制作小游戏2

    2024-04-24 06:22:01       15 阅读
  9. 伪装目标检测中数据集的标注格式:COCO和VOC

    2024-04-24 06:22:01       15 阅读
  10. CS4186 Assignment 2

    2024-04-24 06:22:01       14 阅读
  11. 002 springboot redis 防止表单重复提交

    2024-04-24 06:22:01       11 阅读
  12. echarts之事件交互

    2024-04-24 06:22:01       16 阅读
  13. GitLab 卸载步骤 - 完全卸载

    2024-04-24 06:22:01       17 阅读