Springboot mongodb 操作指南

时光怂恿深爱的人放手 提交于 2020-02-28 12:22:38

  一、新建实体类

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Document(collection = "user_info")
public class UserInfo {

    @Id
    private String id;

    private String name;

    private List<Like> likes;

    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class Like{

        private String code;

        private String name;
    }
}

二、基本使用方法

1:普通新增修改
@RequestMapping(value = "add")
    public ResponseMessage add(){
        List<UserInfo.Like> likes_1 = new ArrayList<>();
        UserInfo.Like like_1 = new  UserInfo.Like();
        like_1.setCode("PLAY");
        like_1.setName("玩耍");
        likes_1.add(like_1);
        UserInfo.Like like_2 = new  UserInfo.Like();
        like_2.setCode("RUN");
        like_2.setName("跑步");
        likes_1.add(like_2);

        UserInfo userInfo = new UserInfo();
        userInfo.setId("101");
        userInfo.setName("小明");
        userInfo.setLikes(likes_1);
        userInfoService.save(userInfo);
        List<UserInfo.Like> likes_2 = new ArrayList<>();
        UserInfo.Like like_2_1 = new  UserInfo.Like();
        like_2_1.setCode("PLAY");
        like_2_1.setName("玩耍");
        likes_2.add(like_2_1);
        UserInfo.Like like_2_2 = new  UserInfo.Like();
        like_2_2.setCode("SLEEP");
        like_2_2.setName("睡觉");
        likes_2.add(like_2_2);

        UserInfo userInfo2 = new UserInfo();
        userInfo2.setId("100");
        userInfo2.setName("小明");
        userInfo2.setLikes(likes_2);
        userInfoService.save(userInfo2);

        return new ResponseMessage();
    }

2:普通字段模糊查询或者精确匹配
@RequestMapping(value = "query")
    public Object query(){
        /*String search = "SLEEP";
        Pattern pattern = Pattern.compile("^.*" + search + ".*$" , Pattern.CASE_INSENSITIVE);
        Query query = new Query(Criteria.where("likes.code").is("PLAY"));
        Query query = new Query(new Criteria().orOperator(Criteria.where("likes.code").regex(pattern),(Criteria.where("likes.code").regex("^.*RUN.*$"))));*/
        Query query = new Query(Criteria.where("likes.code").regex("^.*PLAY.*$"));
        return userInfoService.query(query);
    }

3:按条件进行精确字段更新
    @RequestMapping(value = "update")
    public Object update(){
        String search = "PLAY";
        Pattern pattern = Pattern.compile("^.*" + search + ".*$" , Pattern.CASE_INSENSITIVE);
        Query query = new Query();
        query.addCriteria(Criteria.where("likes.code").is(search));
        Update update = new Update();
        update.set("name","小明改变");
        update.set("likes.$.name","随便耍啊");

        UserInfo.Like like_2_3 = new  UserInfo.Like();
        like_2_3.setCode("PLAY");
        like_2_3.setName("玩耍");
        // addToSet如果数据已经存在,则不做任何操作,而push会插入一条一样的数据 update.push("likes", loc);
        update.addToSet("likes", like_2_3);
        userInfoService.modify(query,update);
        return null;
    }

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!