SpringBoot整合MongoDB常用方法

51 阅读1分钟

💡版本依赖

jdk 17

SpringBoot 3.1.0

Mongo 6.0.8

mybatis-plus 2.0.2

💡环境准备

🌵MongoDB安装

安装教程请查看:一文搞定(linux+windows+docker)安装MongoDB

🌵SpringBoot整合MongoDB安装

整合教程:SpringBoot整合MongoDB

💡实例

🌵插入

User user = User.builder().userName("aa").password("111111").build();
User userMb = template.insert(user);

🌵保存/修改

User user = User.builder().userName("aa").password("111111").build();
//等同 upsert
User userMb = template.save(user);

🌵插入列表

List<User> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
    User user = User.builder().userName("aa").password("111111").build();
    list.add(user);
}
;
List<User> userMbList = (List<User>)template.insertAll(list);

🌵查询单个数据

Query query = Query.query(Criteria.where("id").is(id));//构建查询query
User userMb= template.findOne(query, User.class,"user");

🌵根据id查询

        User userMb= template.findById(id, User.class,"user");
//        Query query = Query.query(Criteria.where("id").is(id));//构建查询query
//        User userMb= template.findById(query, User.class,"user");

🌵查询所有

List<User> list= template.findAll(User.class,"user");

🌵 保存/更新

(存在就更新,不存在就插入)

Query query = new Query();
query.addCriteria(Criteria.where("id").is(user.getId()));
Update update = new Update();
update.set("userName", user.getUserName());
UpdateResult result = template.upsert(query, update, User.class, "user");

🌵 更新查询到的第一个

Query query = Query.query(Criteria.where("username").is("coderJim"));
Update update = Update.update("passward", "123456");
UpdateResult result = template.updateFirst(query, update, User.class,"user");

🌵批量更新

public void updateBatch(List<User> users){
​
    if (CollectionUtils.isEmpty(users)) {
        return;
    }
​
    BulkOperations operations = template.bulkOps(BulkOperations.BulkMode.UNORDERED, "user");
    List<Pair<Query, UpdateDefinition>> list = new ArrayList<>();
​
    for (User user : users) {
​
        Query query = new Query();
        query.addCriteria(Criteria.where("id").is(user.getId()));
        Update update = new Update();
        update.set("userName", user.getUserName());
        update.set("password", user.getPassword());
        Pair<Query, UpdateDefinition> pair = Pair.of(query, update);
        list.add(pair);
    }
​
    operations.updateMulti(list);
    operations.execute();
}

🌵 根据条件删除

Query query = new Query();
query.addCriteria(Criteria.where("id").is(id));
DeleteResult result = template.remove(query, User.class,"user");

🌵 批量删除

public void deleteBatch(List<String> idList){
​
    List<Query> queryList = new LinkedList<>();
    for(String id : idList){
        queryList.add(Query.query(Criteria.where("id").is(id)));
    }
    BulkOperations operations = template.bulkOps(BulkOperations.BulkMode.UNORDERED, "user");
    operations.remove(queryList);
    operations.execute();
​
}

🌵获取集合名字

template.getCollectionName(User.class);

🌵查询该集合中的所有文档

MongoCollection<Document> documentMongoCollection = template.getCollection("user");

💡Criteria构建查询条件

  • is():等于
  • ne():不等于
  • in():包含在给定列表中
  • nin():不包含在给定列表中
  • lt():小于
  • lte():小于等于
  • gt():大于
  • gte():大于等于
  • regex():正则表达式匹配

💡注意

1.每个操作带上collectionName, 效率提高许多,并且,防止子类错误操作

🎁如果需要完整源码请关注公众号"架构殿堂" ,回复 "SpringBoot+MongoDB常用方法"即可获得

🔔写在最后

如果大家对相关文章感兴趣,可以关注公众号"架构殿堂",会持续更新AIGC,java基础面试题, netty, spring boot, spring cloud等系列文章,一系列干货随时送达!