SpringBoot整合mongoDB基础操作

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));
    }


}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值