环境准备
1、引入依赖
<!--spring data mongodb-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
2、配置yml
spring:
data:
mongodb:
uri: mongodb://fox:fox@192.168.65.174:27017/test?authSource=admin
#uri等同于下面的配置
#database: test
#host: 192.168.65.174
#port: 27017
#username: fox
#password: fox
#authentication-database: admin
连接配置参考文档:Connection String URI Format — MongoDB Manual
3、使用时注入mongoTemplate
@Autowired
MongoTemplate mongoTemplate;
集合操作
@Test
public void testCollection(){
boolean exists = mongoTemplate.collectionExists("emp");
if(exists){
//删除集合
mongoTemplate.dropCollection("emp");
}
//创建集合
mongoTemplate.createCollection("emp");
}
文档操作
相关注解:
- @Document
- 修饰范围: 用在类上
- 作用: 用来映射这个类的一个对象为mongo中一条文档数据。
- 属性:( value 、collection )用来指定操作的集合名称
- @Id
- 修饰范围: 用在成员变量、方法上
- 作用: 用来将成员变量的值映射为文档的_id的值
- @Field
- 修饰范围: 用在成员变量、方法上
- 作用: 用来将成员变量及其值映射为文档中一个key:value对。
- 属性:( name , value )用来指定在文档中 key的名称,默认为成员变量名
- @Transient
- 修饰范围:用在成员变量、方法
- 作用:用来指定此成员变量不参与文档的序列化
创建实体
@Document("emp") //对应emp集合中的一个文档
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Employee {
@Id //映射文档中的_id
private Integer id;
@Field
private String name;
@Field
private int age;
@Field
private Double salary;
@Field
private Date birthday;
}
添加文档
insert方法返回值是新增的Document对象,里面包含了新增后_id的值。如果集合不存在会自动创建集合。通过Spring Data MongoDB还会给集合中多加一个_class的属性,存储新增时Document对应java中类的全限定路径。这么做为了查询时能把Document转换为java类型。
@Test
public void testInsert(){
Employee employee = new Employee(1,"小花",30,10000.00,new Date());
//添加文档
//save: _id存在时更新数据
//mongoTemplate.save(employee);
//insert: _id存在抛出异常 支持批量操作
mongoTemplate.insert(employee);
List<Employee> list = Arrays.asList(
new Employee(2, "张三", 21,5000.00, new Date()),
new Employee(3, "李四", 26,8000.00, new Date()),
new Employee(4, "王五",22, 8000.00, new Date()),
new Employee(5, "张龙",28, 6000.00, new Date()),
new Employee(6,