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

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 使用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();


相关文章
|
10月前
|
存储 NoSQL MongoDB
【赵渝强老师】MongoDB写入数据的过程
在MongoDB数据更新时,WiredTiger存储引擎通过预写日志(Journal)机制先将更新写入日志文件,再通过检查点操作将日志中的操作刷新到数据文件,确保数据持久化和一致性。检查点定期创建,缩短恢复时间,并保证异常终止后可从上一个有效检查点恢复数据。视频讲解及图示详细说明了这一过程。
230 23
【赵渝强老师】MongoDB写入数据的过程
|
8月前
|
NoSQL 测试技术 MongoDB
微服务——MongoDB实战演练——MongoTemplate实现评论点赞
本节介绍如何使用MongoTemplate实现评论点赞功能。传统方法通过查询整个文档并更新所有字段,效率较低。为优化性能,采用MongoTemplate对特定字段直接操作。代码中展示了如何利用`Query`和`Update`对象构建更新逻辑,通过`update.inc(&quot;likenum&quot;)`实现点赞数递增。测试用例验证了功能的正确性,确保点赞数成功加1。
163 0
|
8月前
|
NoSQL 测试技术 MongoDB
微服务——MongoDB实战演练——根据上级ID查询文章评论的分页列表
本节介绍如何根据上级ID查询文章评论的分页列表,主要包括以下内容:(1)在CommentRepository中新增`findByParentid`方法,用于按父ID查询子评论分页列表;(2)在CommentService中新增`findCommentListPageByParentid`方法,封装分页逻辑;(3)提供JUnit测试用例,验证功能正确性;(4)使用Compass插入测试数据并执行测试,展示查询结果。通过这些步骤,实现对评论的高效分页查询。
119 0
|
3月前
|
存储 JSON NoSQL
查询 MongoDB--SPL 轻量级多源混算实践 4
SPL 支持多种数据源连接,包括 MongoDB 等 NoSQL 数据库。通过外部库形式提供驱动,灵活扩展,可实现实时数据计算与混合分析。
|
8月前
|
存储 JSON NoSQL
微服务——MongoDB的数据模型
MongoDB采用文档(document)作为最小存储单位,类似关系型数据库中的行,使用BSON(Binary-JSON)格式存储数据。BSON是JSON的二进制扩展,支持内嵌文档和数组,新增了如Date、BinData等特殊数据类型,具有轻量、高效、可遍历的特点,适合非结构化与结构化数据存储。其灵活性高,但空间利用率略低。BSON数据类型包括string、integer、boolean等基本类型及date、object id等扩展类型。
192 0
|
10月前
|
SQL NoSQL Java
Java使用sql查询mongodb
通过MongoDB Atlas Data Lake或Apache Drill,可以在Java中使用SQL语法查询MongoDB数据。这两种方法都需要适当的配置和依赖库的支持。希望本文提供的示例和说明能够帮助开发者实现这一目标。
356 17
|
11月前
|
SQL NoSQL Java
Java使用sql查询mongodb
通过使用 MongoDB Connector for BI 和 JDBC,开发者可以在 Java 中使用 SQL 语法查询 MongoDB 数据库。这种方法对于熟悉 SQL 的团队非常有帮助,能够快速实现对 MongoDB 数据的操作。同时,也需要注意到这种方法的性能和功能限制,根据具体应用场景进行选择和优化。
394 9
|
存储 NoSQL MongoDB
MongoDB 查询分析
10月更文挑战第21天
107 1
|
NoSQL MongoDB 索引
MongoDB 覆盖索引查询
10月更文挑战第21天
122 1
|
4月前
|
NoSQL MongoDB 数据库
数据库数据恢复—MongoDB数据库数据恢复案例
MongoDB数据库数据恢复环境: 一台操作系统为Windows Server的虚拟机上部署MongoDB数据库。 MongoDB数据库故障: 工作人员在MongoDB服务仍然开启的情况下将MongoDB数据库文件拷贝到其他分区,数据复制完成后将MongoDB数据库原先所在的分区进行了格式化操作。 结果发现拷贝过去的数据无法使用。管理员又将数据拷贝回原始分区,MongoDB服务仍然无法使用,报错“Windows无法启动MongoDB服务(位于 本地计算机 上)错误1067:进程意外终止。”

推荐镜像

更多
下一篇
开通oss服务