6.2 整合MongoDB

6.2 整合MongoDB

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

1. MongoDB简介

MongoDB是一种面向文档的数据库管理系统 ,它是一个介于关系型数据库和非关系型数据库之间的产品,MongoDB功能丰富,它支持一种类似JSON的BSON数据格式既可以存储简单的数据格式,也可以存储复杂的数据类型

MongoDB最大的特点是它支持的查询语言非常强大,并且还支持对数据建立索引。总体来说,MongoDB是一款应用相当广泛的NoSQL数据库。

2. MongoDB安装

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

2.1 下载

java 复制代码
//1.下载MongoDB
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.0.tgz
java 复制代码
//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,分别用来保存数据和日志,代码如下:

java 复制代码
cd mongodb
mkdir db
mkdir logs

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

java 复制代码
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:

java 复制代码
./mongod -f mongo.conf --bind_ip_all

-f 表示指定配置文件的位置,--bind_ip_all则表示允许所有的远程地址连接该MongoDB实例。

MongoDB启动成功后,在bin目录下再执行mongo命令,进入MongoDB控制台 ,然后输入db.version(),如果能看到MongoDB的版本号,就表示安装成功:

java 复制代码
./mongo
db.version()

2. 关闭MogoDB

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

java 复制代码
use admin;
db.shutdownServer();
exit

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

2.4 安全管理

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

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

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

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

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

java 复制代码
db.shutdownServer();
exit

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

java 复制代码
./mongod -f mongo.conf --bind_ip_all

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

java 复制代码
./mongo
db.auth("admin","Abc1234%")

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

3. 整合SpringBoot

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

3.1 依赖

java 复制代码
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

3.2 MongoTemplate使用

java 复制代码
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. 删除


删除朝花夕拾

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

相关推荐
我科绝伦(Huanhuan Zhou)28 分钟前
浅聊达梦数据库物理热备的概念及原理
数据库·oracle
zhz52141 小时前
从PostgreSQL到人大金仓(KingBase)数据库迁移实战:Spring Boot项目完整迁移指南
数据库·spring boot·postgresql
万行2 小时前
点评项目(Redis中间件)&第一部分Redis基础
java·数据库·redis·缓存·中间件
SelectDB2 小时前
Apache Doris 登顶 RTABench —— 实时分析领域的性能王者
数据库·数据分析·开源
用户6279947182622 小时前
南大通用GBase 8a加载常见错误原因
数据库
咸甜适中2 小时前
rust语言(1.88.0)sqlite数据库rusqlite库(0.37.0)学习笔记
数据库·rust·sqlite·rusqlite
Jasonakeke2 小时前
【重学 MySQL】九十二、 MySQL8 密码强度评估与配置指南
android·数据库·mysql
heath ceTide3 小时前
第二章从事件驱动到信号
数据库·系统架构
StarRocks_labs3 小时前
欧洲数字化养殖平台 Herdwatch 借力 Iceberg + StarRocks 提升分析能力
数据库·starrocks·iceberg·湖仓一体架构·herdwatch
TDengine (老段)3 小时前
TDengine IDMP 5 个实测场景让监控变简单
大数据·数据库·物联网·ai·时序数据库·tdengine·涛思数据