Java中使用MongoTemplate 简单操作MongoDB

@Autowired

private MongoTemplate mongoTemplate;

User:封装的对象

插入:mongoTemplate.insert(user);

根据id查询:mongoTemplate.findById(id, User.class);

查询所有:mongoTemplate.findAll(User.class);

条件查询:

复制代码
Query query = new Query(
        Criteria.where("name").is("迪丽热巴")
        .and("age").is(25));
    List<User> userList = mongoTemplate.find(query, User.class);

模糊查询:

复制代码
 String name = "李";
    String regex = String.format("%s%s%s","^.*" , name , ".$");
    // 定义正则表达式 Pattern.CASE_INSENSITIVE 忽略大小写
    Pattern pattern = Pattern.compile(regex , Pattern.CASE_INSENSITIVE);
    Query query = new Query(Criteria.where("name").regex(pattern));

    List<User> userList = mongoTemplate.find(query, User.class);

分页查询:

复制代码
  Integer pageNum = 1;
  Integer pageSize = 3;
// skip跳过多少个,limit 需要查询多少
    List<User> userList = mongoTemplate.find(
        query.skip((pageNum - 1) * pageSize).limit(pageSize), User.class);

修改:

复制代码
@Test
void update() {
    User user = mongoTemplate.findById("456189465144321854", User.class);
    user.setName("张三");
    user.setAge(21);

    // where
    Query query = new Query(Criteria.where("_id").is("456189465144321854"));
    
    // 修改信息
    Update update = new Update()
        .set("name",user.getName()).set("age",user.getAge());
    UpdateResult updateResult = mongoTemplate.upsert(query, update, User.class);
    System.out.println(updateResult.getModifiedCount());
}

删除:

复制代码
@Test
void delete() {
    Query query = new Query(Criteria.where("name").is("张三"));
    DeleteResult deleteResult = mongoTemplate.remove(query, User.class);
    System.out.println(deleteResult.getDeletedCount());
}
相关推荐
李兆龙的博客几秒前
问津集 #12:Calcspar:相同 Paid IOPS 下的 RocksDB 尾延迟优化
数据库
智购科技自动售卖机厂家几秒前
2026自动售货机云端数据备份策略:从全量备份到增量恢复的工程实践~YH
数据库·stm32·嵌入式硬件·物联网·架构·零售
笔头子1 小时前
【Caché】数据库基础操作
数据库
上火的金鱼妹1 小时前
redis集群部署与连接
数据库·redis·缓存
程序员-Benothing1 小时前
MySQL 二级索引有 MVCC 快照吗?
数据库·mysql
xiaoxiangsiyan1 小时前
网络智能化转型核心模块全解析
运维·服务器·网络·数据库·学习·架构·php
不才不才不不才1 小时前
Spring 源码系列(25): @EnableTransactionManagement 与 TransactionInterceptor
java·数据库·spring
l1t2 小时前
DeepSeek总结的DuckDB访谈:DuckDB的崛起、扩展与AWS收购
数据库·云计算·aws·duckdb
隔窗听雨眠2 小时前
CI/CD测试数据清理完全指南:从污染根因到三层清理覆盖的完整方案
java·数据库·ci/cd
无定义_2 小时前
Bellman-Ford——贝尔曼福特算法
数据库·算法