1、首先在pom.xml文件中添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
2、在 项目配置文件application.properties 中配置mongodb相关信息,wj是其中一个数据库的名称
spring.data.mongodb.uri=mongodb://localhost:27017/wj
以上两步完成后,mongoDB的环境就准备好了。
3、首先建立一个User类
@Data
public class User {
private String name;
private int age;
private String sex;
}
然后建立一个mongoDbService,写相关方法,源码如下:
@Service
public class mongoDbService {
@Autowired
MongoTemplate template;
/**
* 批量插入
* @param list
* @return
*/
public String batchInsert(List<User> list){
template.insertAll(list);
return "批量添加数据成功";
}
/**
* 单个数据添加
*/
public User insert(User user){
return template.insert(user);
}
/**
* 根据删除数据
*/
public String delete(String name){
template.remove(new Query(Criteria.where("name").is(name)),User.class);
return "删除成功";
}
/**
* 根据名称查找数据
*/
public User find(String name){
return template.findOne(new Query(Criteria.where("name").is(name)),User.class);
}
/**
* 多条件查询数据
*/
public User find(String name,int age){
return template.findOne(new Query(Criteria.where("name").is(name).and("age").is(age)),User.class);
}
/**
* 更新数据
*/
public String update(String name,String key,String value){
template.updateFirst(new Query(Criteria.where("name").is(name)), Update.update(key,value),User.class);
return "更新成功";
}
/**
* 获取集合中所有数据
*/
public List<User> getAll(){
return template.findAll(User.class);
}
/**
* in查询
*/
public List<User> findByIn(){
return template.find(new Query(Criteria.where("age").in(Arrays.asList(19,20))),User.class);
}
/**
* 满足任一条件即可
*/
public List<User> findAny(String name,int age){
return template.find(new Query(Criteria.where("name").is(name).orOperator(Criteria.where("age").is(age))),User.class);
}
/**
* 数值比较
*/
public List<User> compare(){
return template.find(new Query(Criteria.where("age").gte(20)),User.class);
}
/**
* 正则查询
*/
public List<User> findByRegex(String name){
return template.find(new Query(Criteria.where("name").regex("^.*" + name + ".*$")),User.class);
}
/**
* 查询总数
*/
public long selectCount(String name){
return template.count(new Query(Criteria.where("name").is(name)),User.class);
}
/**
* 分组查询
*/
public AggregationResults<User> group(){
return template.aggregate(Aggregation.newAggregation(Aggregation.group("name")),template.getCollectionName(User.class),User.class);
}
/**
* 排序
*/
public List<User> sort(String name){
return template.find(new Query(Criteria.where("name").is(name)).with(Sort.by("age")),User.class);
}
/**
* 分页 limit
*/
public List<User> sortLimit(String name){
return template.find(new Query(Criteria.where("name").is(name)).with(Sort.by("age")).limit(1),User.class);
}
/**
* 分页 skip
*/
public List<User> sortSkip(String name){
return template.find(new Query(Criteria.where("name").is(name)).with(Sort.by("age")).skip(1),User.class);
}
}
然后写建立一个测试类mongoDbTest测试一下,源码如下:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class mongoDbTest {
@Autowired
mongoDbService service;
/**
* 测试批量插入
*/
@Test
public void batchInsert(){
ArrayList<User> list = Lists.newArrayList();
list.add(new User("张三",19,"男"));
list.add(new User("李四",20,"男"));
list.add(new User("王五",21,"女"));
System.out.println(service.batchInsert(list));
}
/**
* 单个数据添加,并返回添加的数据信息
*/
@Test
public void insert(){
User user = new User();
user.setName("王小二");
user.setAge(18);
user.setSex("男");
System.out.println(service.insert(user));
}
/**
* 根据名称删除数据
*/
@Test
public void delete(){
System.out.println(service.delete("孙七"));
}
/**
* 根据名称查找数据
*/
@Test
public void findByName(){
System.out.println(service.find("张三"));
}
/**
* 多条件链接查询
*/
@Test
public void find(){
System.out.println(service.find("王小二",19));
}
/**
* 通过名称更新数据
*/
@Test
public void update(){
System.out.println( service.update("张三","name","王小二"));
}
/**
* 获取集合中所有数据
*/
@Test
public void getAll(){
System.out.println(service.getAll());
}
/**
* in查询
*/
@Test
public void findByIn(){
List<User> list = service.findByIn();
list.stream().forEach(i -> System.out.println(i));
}
/**
* 满足任意条件即可
*/
@Test
public void findAny(){
List<User> list = service.findAny("李四",20);
list.stream().forEach(i -> System.out.println(i));
}
/**
* 数值比较
*/
@Test
public void compare(){
List<User> list = service.compare();
list.stream().forEach(i -> System.out.println(i));
}
/**
* 正则匹配
*/
@Test
public void queryRegex(){
List<User> list = service.findByRegex("四");
list.stream().forEach(i -> System.out.println(i));
}
/**
* 查询总数
*/
@Test
public void selectCount(){
long count = service.selectCount("王小二");
System.out.println(count);
}
/**
* 分组查询
*/
@Test
public void group(){
AggregationResults<User> results = service.group();
Document document = results.getRawResults();
Set<Map.Entry<String, Object>> set = document.entrySet();
System.out.println(set);
}
/**
* 排序
*/
@Test
public void sort(){
List<User> list = service.sort("王小二");
list.stream().forEach(i -> System.out.println(i));
}
/**
* 分页limit
*/
@Test
public void sortLimit(){
List<User> list = service.sortLimit("王小二");
list.stream().forEach(i -> System.out.println(i));
}
/**
* 分页skip
*/
@Test
public void sortSkip(){
List<User> list = service.sortSkip("王小二");
list.stream().forEach( i -> System.out.println(i));
}
}