MongoDB对接SpringBoot【大数据存储】
文章目录
一、什么是MongoDB?
二、下载MongoDB数据库
1、点击链接进入mongodb官网
编辑2、下载压缩包并解压
3、数据、日志文件夹管理
4、配置环境变量
5、--dbpath命令初始化
6、封装启停文件
三、Boot项目对接MongoDB
1、引入maven依赖
2、配yml文件
3、创建MogodbPojo实体类
4、注入MongoDB模版
5、创建controller
2、查看接口测试数据
四、注意事项
一、什么是MongoDB?
定义:MongoDB是一种NoSQL数据库,属于文档型数据库,使用BSON(二进制JSON)格式存储数据。
特点:
灵活的模式:文档结构可以动态变化,不需要预先定义固定的表结构。
高性能:支持高效的查询和索引,适合处理大量数据。
可扩展性:支持水平扩展,通过分片(Sharding)处理海量数据。
丰富的功能:支持复制、事务、聚合管道等高级功能。
用途:
Web应用:适合存储用户数据、日志、配置信息等。
大数据处理:支持海量数据的存储和分析。
内容管理:适合存储和管理文档、图片、视频等非结构化数据。
与其他数据库的区别:
与关系型数据库(如MySQL):MongoDB使用文档模型,而关系型数据库使用表结构。MongoDB更加灵活,适合处理非结构化数据。
与其他NoSQL数据库(如Redis):Redis主要作为内存数据库,适合缓存和会话存储,而MongoDB更适合持久化存储和复杂查询。
二、下载MongoDB数据库
Download MongoDB Community Server | MongoDBhttps://www.mongodb.com/try/download/community
1、点击链接进入mongodb官网
2、下载压缩包并解压
下载压缩包解压到文件夹,我放在了D盘,我选择的是6版本
切记路径不要有中文,避免潜在问题
3、数据、日志文件夹管理
我们进入此文件夹下新建data、logs两个文件夹:
4、配置环境变量
需要配置一下环境变量,注意替换为您的文件路径:
5、--dbpath命令初始化
初始化mongodb储存路径,进入bin目录下,使用--dbpath data路径 --dbpath log路径来初始化
d:\MongoDB\Server\3.4\bin --dbpath “d:\MongoDB\Server\3.4\data” --logpath “d:\MongoDB\Server\3.4\logs\mongo.log”
6、封装启停文件
然后封装我们的启动命令,便于以后使用;进入到mongodb文件夹下,创建两个文件
start_mongodb.bat启动文件内容如下:
@echo off
cd /d D:\App\mongoDB\mongodb-win32-x86_64-windows-6.0.21\bin
net start mongodb
echo MongoDB服务已启动
pause
stop_mongodb.bat停止文件内容如下:
@echo off
net stop mongodb
echo MongoDB服务已停止
pause
双击start_mongodb.bat文件启动,在浏览器输入localhost:27017输出以下内容代表服务启动成功
三、Boot项目对接MongoDB
1、引入maven依赖
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.1.RELEASE</version></parent><!--mongodb配置,跟随boot版本--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>
2、配yml文件
# mongodb配置
springdata:mongodb:uri: mongodb://localhost:27017/mydatabaseconnection-pool:max-size: 100min-size: 10
3、创建MogodbPojo实体类
创建MogodbPojo实体类,mongodb自动生成id我们在实体类中不写也没关系的。
package com.my.entity;
import lombok.Data;
import java.time.LocalDate;@Data
public class MogodbPojo {private String name;private Integer age;
}
4、注入MongoDB模版
使用模版注入的方式引入MongoDB。
@Autowiredprivate MongoTemplate mongoTemplate;
5、创建controller
新建MongoDBController编写CRUD代码中有注释说明。
package com.my.controller;import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import com.my.Rcode.Results;
import com.my.entity.MogodbPojo;
import org.springframework.beans.factory.annotation.Autowired;
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.data.mongodb.core.query.Update;
import org.springframework.web.bind.annotation.*;import java.util.List;/**** NAME:Ran* TIME:2025/4/1*/
@RestController
public class MongoDBController {// 第一步注入controller@Autowiredprivate MongoTemplate mongoTemplate;// 新增@PostMapping("/insert")public MogodbPojo insert(@RequestBody MogodbPojo mogodbPojo) {return mongoTemplate.insert(mogodbPojo, "users");//存储数据 集合名称}// 删除@DeleteMapping("remove")public DeleteResult remove(String id) {
// 构建删除条件 匹配id字段Query queryMongodb = new Query(Criteria.where("_id").is(id));
//调用删除方法,指定class类,集合名称用于定位return mongoTemplate.remove(queryMongodb, MogodbPojo.class, "users");}// 修改@PostMapping("/update")public UpdateResult update(@RequestParam String id, @RequestParam String name) {
// 创建条件Query query = new Query(Criteria.where("_id").is(id));
// 被修改字段Update updateName = new Update().set("name", name);
//调用更新方法return mongoTemplate.updateFirst(query, updateName, MogodbPojo.class, "users");}// 根据id做单个查询@GetMapping("/selectById")public MogodbPojo selectById(@RequestParam String id) {return mongoTemplate.findById(id, MogodbPojo.class, "users");}// 根据条件做多个查询@GetMapping("/selectList")public List<MogodbPojo> selectList(@RequestParam String name) {Query query = new Query(Criteria.where("name").is(name));return mongoTemplate.find(query, MogodbPojo.class, "users");}
}
6、Navicat连接MongoDB
我们使用navicat工具来连接mongodb服务,点击连接选择mongoDB,连接名称任意,其它项默认即可,点击测试连接并确定。
2、查看接口测试数据
执行接口进行测试数据库结果如下:
因为mongodb是json格式,我们换一下视图:
四、注意事项
1、中文路径问题不要有。
2、navicat版本不要太旧,否则没有mongodb连接项。
3、虽然mongodb对于复合查询效率但是我们创建mongodb的实体类可以任意组合参数。