摘要:文档数据库中间件MongoDB的强大之处在于其可以存储大批量、海量的数据并可实现快速、高效、稳定的查询功能(据说千万级、亿级别的数据查询只需要几秒),其底层是采用“文档Document”的形式、Json格式的数据结构来存储数据的,在大数据量查询的场景下相对于关系型数据库如Mysql而言,效率将显著提升,本文我们将模拟在大数据量的场景下实现数据的分页查询与删除功能。
内容:在上一篇文章中我们简要介绍了NoSQL领域中鼎鼎大名的文档型数据库中间件MongoDB,并基于Spring Boot2.0搭建的企业级项目整合了MongoDB服务实战了“用户模块User”最基本的新增、批量新增、修改与简单的查询。本文我们将继续介绍其剩下的删除功能和“大数据量”的场景下其分页查询功能的实现!
(1)我们直接贴出“删除”功能代码的实现吧:
//TODO:删除
@Transactional(rollbackFor = Exception.class)
public void delete(final Integer id) throws Exception{
int res=userMapper.deleteByPrimaryKey(id);
if (res>0){
Query query=Query.query(Criteria.where("id").is(id));
mongoTemplate.remove(query,MongoUser.class);
}
}
直接调用mongoTemplate的remove方法即可实现!之后,直接写个Java单元测试用例即可查看其最终的执行效果,如下所示:
@Test
public void method5() throws Exception{
log.info("---单元测试5-删除---");
final Integer id=343686;
mongoUserRepository.delete(id);
MongoUser entity=mongoUserRepository.queryById(id);
log.info("---根据主键id查询,结果={}---",entity);
}
点击运行之后,通过Navicat 跟 Robo 3T查看该条数据,会发现该条记录已经不存在了!
(2)紧接着我们写个多线程、往MongoDb批量插入大批量的数据,然后我们一起来体验一下大数据量场景下“分页查询”功能的实现。