一、使用步骤
1.1 导入pom依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
1.2 application.properties中加入配置
spring.data.mongodb.database=admin spring.data.mongodb.host=10.19.186.213 spring.data.mongodb.port=27017
1.3 编写实体类
@Document("User")
public class User<Data> implements Serializable {
@Field("Id")
private Integer Id;
@Indexed
private String name;
private String age;
Document 文档,填写集合名称
1.4 使用Template编写新增方法
/**
* 保存对象
* @param user
*/
public void save(User user){
mongoTemplate.save(user);
}
执行结果,数据库中新增一条记录

1.5 使用Template编写查询方法
/**
* 查询单个对象
* @param name
* @return
*/
public User findUser(String name){
Query query = new Query(Criteria.where("name").is(name));
User user = mongoTemplate.findOne(query, User.class);
return user;
}

1.6 使用Template更新
/**
* 更新用户
* @param user
*/
public void updateUser(User user){
Query query=new Query(Criteria.where("Id").is(user.getId()));
Update update= new Update().set("age", user.getAge()).set("name", user.getName());
mongoTemplate.updateFirst(query,update,User.class);
}

1.7 删除用户
/**
* 删除用户
* @param id
*/
public void deleteUser(Integer id){
Query query=new Query(Criteria.where("Id").is(id));
mongoTemplate.remove(query,User.class);
}
2.1 使用Repository对数据库进行CURD
2.1.1 接口继承MongoRepository
public interface RepositoryTest extends MongoRepository<User,String> {
}
2.1.2 引入repository
@Autowired
private RepositoryTest repositoryTest;
2.1.3 新增用户测试
/**
* 增加用户
*/
@Test
public void saveUser(){
User<Object> user = new User<>();
user.setId(10001);
user.setName("anan");
user.setAge("12");
repositoryTest.save(user);
}
2.1.4 查询用户测试
/**
* 查询用户
*/
@Test
public void findUser(){
Optional<User> byId = repositoryTest.findById("61386067aa33044a1195589b");
System.out.println(byId.get().toString());
}
根据ID进行查询

根据其他属性进行查询:
根据name进行查询,首先在Repository中新增方法
User findByName(String name);
/**
* 根据条件查询
*/
@Test
public void findUserByCondition(){
User byId = repositoryTest.findByName("anan");
System.out.println(byId);
}

2.1.5 更新用户测试
/**
* 使用save更新,需要测试
*/
@Test
public void updateUser(){
Optional<User> byId = repositoryTest.findById("61386067aa33044a1195589b");
User user = byId.get();
user.setName("de");
repositoryTest.save(user);
System.out.println("更新用户完成");
}
在刚开始测试时,发现并不能修改这条记录,一直会新增
后来发现数据中的中_id字段

save修改的原理是根据_id是否已经存在,存在则修改,不存在则新增,而我的User中是没有这个字段的,所以每次传过去都是空的_id,会一直新增
@Document("User")
public class User<Data> implements Serializable {
private String _id;
在User中新增_id字段解决上面问题

可以看到_id记录中的名称已经修改了
2.1.6 删除用户测试
根据_id进行删除
/**
* 删除用户测试
*/
@Test
public void deleteUser(){
repositoryTest.deleteById("613866efd78e4b6246d8b5b1");
System.out.println("删除成功");
}
根据id批量删除,首先在repository中新增方法
void deleteAllBy_idIsIn(List<String> ids);
/**
* 批量删除
*/
@Test
public void batchDeleteUser(){
ArrayList<String> list = Lists.newArrayList();
list.add("6131c83d93944e2364df3aec");
list.add("6131cb08c9622c250fa4e9e0");
list.add("6131d491a31d4c49a6c9585b");
list.add("6138659913395b34a6e51e67");
repositoryTest.deleteAllBy_idIsIn(list);
System.out.println("批量删除成功");
}