一、环境搭建
第一步:在pom.xml文件中引入下述依赖,当前Spring Boot的版本为 2.7.6:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
<version>2.7.6</version>
</dependency>
最终完整的pom.xml文件内容如下:
<?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 https://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.7.6</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.bc</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<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>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
第二步: 在application.yml文件配置连接MongoDB
如果MongoDB没有设置密码,则在application.yml文件可以这样配置连接MongoDB:
spring:
data:
mongodb:
uri: mongodb://ip:端口/数据库名
如果MongoDB设置了密码,则在application.yml文件需要这样配置:
spring:
data:
mongodb:
uri: mongodb://账号:密码@ip:端口/数据库名
当前MongoDB没有设置密码,因此最终在application.yml文件中的配置如下:
二、集合操作
2.1 创建集合
使用 show collections; 命令查看user库中的集合:
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import javax.annotation.Resource;
@SpringBootTest
class DemoApplicationTests {
@Resource
private MongoTemplate mongoTemplate;
@Test
public void testCreateCollection() {
mongoTemplate.createCollection("users"); // 参数,创建集合名称
}
}
执行上述代码,再次查看user库中的集合,这时就会发现已经新增了一个users集合:
如果库中已经存在了对应的集合时,执行上述代码去创建集合是会报错的,因此可以对上述代码进行一个优化:
@Test
public void testCreateCollection() {
Boolean exists = mongoTemplate.collectionExists("users");
if(!exists){
mongoTemplate.createCollection("users"); // 参数,创建集合名称
}
}
2.2 删除集合
@Test
public void testDeleteCollection() {
mongoTemplate.dropCollection("users"); // 参数,创建集合名称
}
三、相关注解
@Document
- 修饰范围:用在类上
- 作用:用来映射这个类的一个对象为mongo中一条文档数据
- 属性:(value、collection)用来指定操作的集合名称
@Id
- 修饰范围:用在成员变量、方法上
- 作用:用来将成员变量的值映射为文档的_id的值
@Field
- 修饰范围:用在成员变量、方法上
- 作用:用来将成员变量以及值映射为文档中一个key、value对
- 属性:(name,value)用来指定在文档中 key的名称,默认为成员变量名
@Transient
- 修饰范围:用在成员变量、方法上
- 作用:用来指定该成员变量不参与文档的序列化
四、文档操作
4.1 添加文档
package com.bc.demo.entity;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
import java.util.Date;
@Document(value = "users") //这个类实例就代表MongoDB中的一条文档
public class User {
@Id
private Integer id;
@Field(value = "username")
private String name;
@Field
private Double salary;
@Field
private Date birthday;
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", salary=" + salary +
", birthday=" + birthday +
'}';
}
public User() {
}
public User(Integer id, String name, Double salary, Date birthday) {
this.id = id;
this.name = name;
this.salary = salary;
this.birthday = birthday;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Double getSalary() {
return salary;
}
public void setSalary(Double salary) {
this.salary = salary;
}
public Date