docker安装Mongodb并使用SpringBoot整合Mongodb简单教程

本文详细介绍了如何在Docker中安装和启动MongoDB容器,包括拉取镜像、创建容器、测试连接等步骤,并对比了MongoDB与传统SQL数据库的区别。接着,列举了MongoDB的常用命令,如创建集合、查询、排序、更新和删除。此外,还展示了如何在SpringBoot项目中集成MongoDB,包括添加依赖、配置文件、创建实体类和测试类。

1.docker安装教程

1.拉取镜像

docker pull mongo:latest

在这里插入图片描述
2.创建并启动容器

docker run -d --restart=always -p 27017:27017 --name mymongo -v /docker/mongodb/data:/data/db -d mongo

3.查看容器是否运行成功

docker ps -a

在这里插入图片描述
容器运行成功
4.测试连接

在这里插入图片描述

2.Mongodb与传统数据库区别

SQL术语/概念MongoDB术语/概念解释说明
databasedatabasedatabase
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据字段/域
indexindex索引
primary keyprimary key主键,MongoDB自动将_id字段设置为主键
tablejoins表连接,MongoDB不支持

7.注意事项

 1、文档中的键/值对是有序的。
 2、文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。
 3、MongoDB区分类型和大小写。
 4、MongoDB的文档不能有重复的键。
 5、文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符。
6、键不能含有\0 (空字符)。这个字符用来表示键的结尾。
 7、.和$有特别的意义,只有在特定环境下才能使用。
8、以下划线"_"开头的键是保留的(不是严格要求的)。

2.mongodb常用命令

1.Help查看命令提示

db.help();

2.切换数据库

use test
当数据库不存在时会创建

3.删除数据库

db.dropDatabase();

4.获取数据库名称

db.getName();

5.查看版本

db.version();

6.创建集合

db.createCollection("student")

7.新增字段

db.student.save({name:'李华',age:0,sex:'男'})
1.当第二次使用命令时新增字段时,之前新增的数据会为空
db.student.save({name:'李华',age:0,sex:'男',birthyday:'2022-02-23'})

8.查询

# select * from student where name = 'zhangsan'
 db.student.find({name:"zhangsan"})
# select name, age from student where age = 21
db.student.find({age:21}, {'name':1, 'age':1})

9.排序

# select * from student order by age
db.student.find().sort({age:1})MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段并使用 1-1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。

10.截取

# select * from student skip 2 limit 3
 db.student.find().skip(0).limit(3)MongoDB 中使用 limit()方法来读取指定数量的数据,skip()方法来跳过指定数量的数据

11.in

# select * from student where age in (21, 26, 32)
db.student.find({age:{$in:[21,26,32]}})

12.count

# select count(*) from student where age >20
 db.student.find({age:{$gt:20}}).count()

13.or

# select * from student where age = 21 or age = 28
 db.student.find({$or:[{age:21}, {age:28}]})

14.update

# update student set age = 100, sex = 0 where name = 'zhangsan'
 db.student.update({name:"zhangsan"}, {$set:{age:100, sex:0}})
 Update()有几个参数需要注意。
db.collection.update(criteria, objNew, upsert, mult)
criteria:需要更新的条件表达式
objNew:更新表达式
upsert:FI标记录不存在,是否插入新文档。
multi:是否更新多个文档。

15.删除

db.student.remove(id)
//移除对应id的行
 db.student.remove({})
//移除所有

springBoot集成Mongodb

1.引入相关依赖pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">


    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>springboot-mongodb-start</artifactId>
    <packaging>jar</packaging>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
</dependencies>
</project>

2.添加配置文件

spring:
  data:
    mongodb:
      uri:  mongodb://192.168.32.250:27017/studyinfo
server:
  port: 8009

3.新建实体类

package com.example.domain;

import lombok.*;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Data
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Document(collection = "student")
public class Student {
    @Id
    private String id;
    private String name;
    private int age;
    private String sex;

}

4.新建test类

import com.example.MyMongodbApplication;
import com.example.domain.Student;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
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.test.context.junit4.SpringRunner;

import java.util.List;

@SpringBootTest(classes = MyMongodbApplication.class)
@RunWith(SpringRunner.class)
public class MongodbTest {
    //引入依赖
    @Autowired
    private MongoTemplate mongoTemplate;
    @Test
    public void query(){
        List<Student> student = mongoTemplate.findAll(Student.class, "student");
       student.forEach(System.out::println);
    }

    @Test
    public void insert(){
        mongoTemplate.insert(new Student("韩信",21,"男"));

    }
    @Test
    public void update(){
        Query query=new Query();
        Criteria criteria = Criteria.where("name").is("李白");
        query.addCriteria(criteria);
        List<Student> students = mongoTemplate.find(query, Student.class);
        students.forEach(System.out::println);
        Update update=new Update();
        update.set("name","李白2");
        mongoTemplate.upsert(query,update,Student.class);
    }

    @Test
    public void del(){
        Student byId = mongoTemplate.findById("63f9e6297a836d86c4cd5bc2", Student.class);
        mongoTemplate.remove(byId);
        
    }


}

5.以上就是使用MongoTemplate 完成CURD,特别注意的是,查询修改删除中都要使用的query对象,以及条件构造器criteria对象进行操作。
也可以使用MongoRepository,使用方法与MybatisPlus用法很像,有兴趣的小伙伴可以自行研究

### 安装 MongoDB 通过 Spring Boot 进行连接 #### 使用 Docker 安装 MongoDB 为了在 Docker安装运行 MongoDB,可以通过官方镜像来简化这一过程。首先,确保已经安装Docker。 启动 MongoDB 的最简单方法是从 Docker Hub 获取官方 MongoDB 镜像: ```bash docker pull mongo:latest ``` 接着,创建一个新的容器实例,将其映射到主机上的端口以便访问数据库服务: ```bash docker run -d --name my-mongo -p 27017:27017 mongo:latest ``` 上述命令会下载最新版本的 MongoDB 映像(如果尚未存在),然后以后台模式启动它,在此过程中指定了容器名称 `my-mongo` 和端口转发设置 `-p 27017:27017`[^2]。 对于更复杂的配置需求,比如复制集部署,则可以根据特定的需求定制化 YAML 文件用于 Helm Chart 来实现自动化部署[^1]。 #### 将 Spring Boot 应用程序连接至 MongoDB 数据库 要使基于 JavaSpring Boot Web 应用能够与前面提到的 MongoDB 实例通信,需执行以下操作: 1. **引入依赖** 修改项目的 Maven 或 Gradle 构建文件以加入 spring-boot-starter-data-mongodb 依赖项。例如,在 pom.xml 中添加如下片段: ```xml <!-- 对于Maven项目 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> ``` 2. **配置数据源属性** 编辑 application.properties (或 .yaml),指定 MongoDB 的连接字符串和其他必要的参数: ```properties # application.properties 示例 spring.data.mongodb.uri=mongodb://localhost:27017/mydatabase ``` 3. **定义实体类和仓库接口** 接下来按照标准流程开发应用程序逻辑部分——即设计文档模型对应的 POJO 类型以及继承自 MongoRepository<T, ID> 的 CRUD 存储库接口。 4. **测试连接** 可以编写简单的单元测试验证是否能正常读写记录;也可以直接启动应用通过 RESTful API 测试工具如 Postman 发送请求来进行交互测试。 以上步骤完成后,应该就可以顺利地让 Spring Boot 应用同 Docker 内部运作着的 MongoDB 建立起稳定的数据交换通道了。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值