MongoDB对接SpringBoot【大数据存储】

发布于:2025-07-15 ⋅ 阅读:(14) ⋅ 点赞:(0)

文章目录

一、什么是MongoDB?

二、下载MongoDB数据库

1、点击链接进入mongodb官网

​编辑2、下载压缩包并解压

3、数据、日志文件夹管理

4、配置环境变量

5、--dbpath命令初始化

6、封装启停文件

三、Boot项目对接MongoDB

1、引入maven依赖

2、配yml文件

3、创建MogodbPojo实体类

4、注入MongoDB模版

 5、创建controller

6、Navicat连接MongoDB

 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配置
spring
  data:
    mongodb:
      uri: mongodb://localhost:27017/mydatabase
      connection-pool:
        max-size: 100
        min-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。

    @Autowired
    private 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
    @Autowired
    private 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的实体类可以任意组合参数。


网站公告

今日签到

点亮在社区的每一天
去签到