MongoDB环境搭建及SpringBoot整合调用

本文详细介绍了MongoDB的基本概念、特性和优缺点,包括其文档存储方式、集合和数据库的概念。此外,还提供了在Linux环境下搭建MongoDB服务的步骤,以及如何使用SpringBoot调用MongoDB的方法,包括依赖包的引入、配置、实体类映射、自定义Repository接口和测试用例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、MongoDB的介绍及特性

  • MongoDB是由C++编写的一个介于关系型和非关系型之间的数据库
  • MongoDB是一个文档形式存储的数据库,等同于ES,每个文档(document)表示一行记录
  • MongoDB中collections(集合)表示一个表
  • MongoDB中多个集合(collections)组合起来就是一个数据库

二、MongoDB的优缺点

优点:

  • 弱一致性,更能保证用户的访问速度
  • json形式的数据存储,结构清晰,简洁
  • 性能优越,对于海量数据进行读写操作效率更高效

缺点:

  • 不支持事务,对于数据库操作的安全性系数较低
  • MongoDB占用空间过大

三、Linux下搭建MongoDB服务

1.下载MongoDB对应的安装包,并解压tar -zxvf mongodb-linux-x86_64-3.4.18.tgz

官网下载地址: https://www.mongodb.com/try/download/community

2.将解压目录改名mv mongodb-linux-x86_64-3.4.18 mongodb
在这里插入图片描述
3. 默认情况下 MongoDB 启动后会初始化以下两个目录:

  • 数据存储目录:/$PWD/data
  • 日志文件目录:/$PWD/log
    $PWD等同于当前目录的绝对路径:/data/workspace/mongodb/mongodb
#存储数据
mkdir $PWD/data
#记录日志
mkdir $PWD/log

4.启动MongoDB服务,默认端口27017,出现如图所示表示启动成功

#启动
./mongod --dbpath /data/workspace/mongodb/mongodb/data --logpath /data/workspace/mongodb/mongodb/log/mongod.log --fork

出现如图所示表示启动成功
5.robot3T连接MongoDB服务,等同于RedisManager

robo3t下载地址:https://robomongo.org/
在这里插入图片描述

四、SpringBoot下调用MongoDB

  • 引入对应依赖包
<dependency>
	<groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
 </dependency>
 <dependency>
 	<groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    <exclusions>
    	<exclusion>
        	<groupId>org.junit.vintage</groupId>
            <artifactId>junit-vintage-engine</artifactId>
        </exclusion>
    </exclusions>
</dependency>
  • application.yml简单配置MongoDB连接
server:
  port: 8811

spring:
  data:
    mongodb:
      host: ip
      port: 27017
  • 编写entity类,用于MongoDB数据进行关系映射
@Data
@Document(collection = "user_base") //等同于mysql表名,默认不填取实体类名
public class User {
    //MongoDB下的主键id
    private Integer id;

    private String name;

    private Integer age;

    private Integer salary;

}
  • 自定义UserRepository接口来继承MongoRepository实现CRUD功能
//User实体类,Integer表示主键id类型
public interface UserRepository extends MongoRepository<User,Integer> {
    //自定义查询方法:通过Salary查询并且大于等于某个值
    List<User> findUsersBySalaryIsGreaterThanEqual(Integer salaryValue);
}
  • 配置项目的主启动类
@SpringBootApplication
public class MongoDbApplication {

    public static void main(String[] args) {
        SpringApplication.run(MongoDbApplication.class, args);
    }

}
  • 在test目录下,编写测试用例
@SpringBootTest
public class MongoTest {

    @Autowired
    private UserRepository userRepository;

    //插入5条数据
    @Test
    public void mongoDbSaveData() {
        for (int i = 1; i <= 5; i++) {
            User user = new User();
            user.setId(i);
            user.setName("henry" + i);
            user.setAge(i);
            user.setSalary(i * 200);
            userRepository.save(user);
        }
    }

    //删除数据
    @Test
    public void deleteMongoDbById() {
        //通过id进行匹配删除对应document
        userRepository.deleteById(1);
    }

    //查询所有数据
    public void findAllMongoDb() {
        List<User> users = userRepository.findAll();
        for (User user : users) {
            System.out.println(user);
        }
    }

    //通过id查询数据
    public void findByIdMongoDb() {
        Optional<User> user = userRepository.findById(1);
        System.out.println(user);
    }

    //自定义数据
    @Test
    public void findBySalaryMongoDb() {
        List<User> users = userRepository.findUsersBySalaryIsGreaterThanEqual(500);
        for (User user : users) {
            System.out.println(user);
        }
    }

}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值