💡版本依赖
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, 效率提高许多,并且,防止子类错误操作