使用MongoTemplate 对 mongodb数据进行分组、排序、分页、连表查询

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
推荐全链路深度定制开发平台,高级版 1个月
简介: 使用MongoTemplate 对 mongodb数据进行分组、排序、分页、连表查询

1、普通查询条件

Criteria criteria = new Criteria();
            if (status == 2){ // 全部
                criteria = Criteria.where("status").ne(StatusEnum.DELETED);
            }else if (status == SolitaireConstant.LAUNCH){ // 我发起的
                criteria = Criteria.where("userId").is(userId).and("status").ne(StatusEnum.DELETED);
            }
            Query queryPage = new Query(criteria);
            queryPage.with(Sort.by(Sort.Order.desc("createTime"))).skip((long) page.getCurrent() * page.getSize()).limit(page.getSize()); //分页
            List<StartSolitaireVO> list = mongoTemplate.find(queryPage, StartSolitaireVO.class,SolitaireConstant.START_SOLITAIRE_COLLECTION);

2、聚合查询(分组、排序、分页、连表)

// 连表
LookupOperation lookup = LookupOperation.newLookup()
                    // 关联的从表名字
                    .from(SolitaireConstant.START_SOLITAIRE_COLLECTION)
                    // 主表中什么字段与从表相关联
                    .localField("startSolitaireId")
                    // 从表中的什么字段与主表相关联
                    .foreignField("_id")
                    // 自定义的从表结果集名  与主表关联的数据归于此结果集下
                    .as("startVO");
            Criteria criteria = new Criteria();
            // 主表可能选择的条件
            criteria.and("userId").is(userId);
            // 从表可能选择的条件
            criteria.and("startVO.status").ne(StatusEnum.DELETED);
            // 将筛选条件放入管道中
            Aggregation aggregation = Aggregation.newAggregation(
                    lookup,
                    Aggregation.match(criteria),
                    Aggregation.group("startSolitaireId") // 分组的字段
                            .first("startSolitaireId").as("startSolitaireId")  // 映射的字段 并取别名
                            .first("userId").as("userId")
                            .first("interact").as("interact")
                            .first("createTime").as("createTime")
                            .first("startVO").as("startVO"),
                    Aggregation.sort(Sort.Direction.DESC,"createTime"), // 排序
                    Aggregation.skip((long) page.getCurrent() * page.getSize()),
                    Aggregation.limit(page.getSize())); // 分页
            AggregationResults<MySolitaireVO> aggregate = mongoTemplate.aggregate(aggregation, SolitaireConstant.MY_SOLITAIRE_COLLECTION, MySolitaireVO.class);
            List<MySolitaireVO> mappedResults = aggregate.getMappedResults();


相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
1天前
|
监控 NoSQL MongoDB
mongoDB查看数据的插入日志
【5月更文挑战第9天】mongoDB查看数据的插入日志
20 4
|
1天前
|
监控 NoSQL MongoDB
mongoDB查看数据的插入日志
【5月更文挑战第2天】mongoDB查看数据的插入日志
37 0
|
1天前
|
人工智能 NoSQL atlas
Fireworks AI和MongoDB:依托您的数据,借助优质模型,助力您开发高速AI应用
我们欣然宣布MongoDB与 Fireworks AI 正携手合作让客户能够利用生成式人工智能 (AI)更快速、更高效、更安全地开展创新活动
|
1天前
|
NoSQL 测试技术 定位技术
【MongoDB 专栏】MongoDB 的地理空间索引与位置查询
【5月更文挑战第10天】MongoDB 支持地理空间数据处理,提供2dsphere(球面)和2d(平面)索引,适用于地图导航、物流、社交网络等领域。通过创建索引,可加速位置查询,如查询范围、最近邻及地理空间聚合。案例包括地图应用、物流追踪和社交网络。注意数据准确性、索引优化和性能测试,以发挥其在地理空间处理中的潜力。学习此功能,为应用开发解锁更多可能性!
【MongoDB 专栏】MongoDB 的地理空间索引与位置查询
|
1天前
|
NoSQL 数据处理 MongoDB
MongoDB查询操作深度剖析
【4月更文挑战第30天】本文深入探讨了MongoDB查询操作,包括查询语法、优化及高级技巧。使用`find()`方法进行查询,如`db.users.find({ age: { $gt: 25 } })`找年龄大于25的用户。优化查询性能涉及创建索引、使用复合索引和避免全表扫描。高级查询涵盖聚合管道、文本搜索和地理空间查询,提供复杂数据处理和地理位置查询能力。理解并应用这些知识能提升MongoDB的使用效率和应用性能。
|
1天前
|
分布式计算 DataWorks NoSQL
DataWorks产品使用合集之DataWorks 中同步 MongoDB 数据的步骤如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
28 4
|
1天前
|
NoSQL 数据管理 MongoDB
数据管理DMS产品使用合集之如何通过阿里云的数据管理服务(DMS)导出MongoDB数据
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
|
1天前
|
NoSQL Linux 网络安全
【专栏】在 RHEL 8 或者 CentOS 8 上顺利安装并运行MongoDB,以处理非结构化数据和扩展技术栈
【4月更文挑战第28天】本文档介绍了如何在RHEL或CentOS 8上安装MongoDB,包括环境准备(系统更新、依赖安装、硬件需求和sudo用户)、导入MongoDB GPG公钥、创建Yum仓库、安装MongoDB社区版,以及后续的基本配置和验证(启动服务、防火墙设置和连接验证)。通过这些步骤,用户可以顺利安装并运行MongoDB,以处理非结构化数据和扩展技术栈。
|
1天前
|
JSON NoSQL MongoDB
mongodb通过mongoexport命令导出数据
mongodb通过mongoexport命令导出数据
|
1天前
|
JSON NoSQL MongoDB
mongodb导出聚合查询的数据
mongodb导出聚合查询的数据
http://www.vxiaotou.com