MongoTemplate 聚合查询 group 与 count
date
Nov 7, 2023
slug
MongoTemplate_aggregation_query_group_and_count
status
Published
tags
Java
MongoDB
NoSQL
知识分享
summary
type
Post
category
技术分享
背景
在学习 MongoDB 的过程中发现使用 Spring 的 MongoTemplate 中有一个聚合搜索的小坑,在装配聚合搜索 pipeline 中 group 与 count 的顺序会对查询结果有影响。
样例
rawdata:
插入 MongoDB:
问题
查询 “user_status” 为 “active” 时 “status” 状态的分组
查询语句:
MongoDB 查询语句:
查询结果:
MongoTemplate 查询语句:
查询结果:
坑点:
MongoTemplate 错误写法:
查询结果:
错误分析:
因为 MongoDB 聚合查询使用的是 pipeline,即每一层管道执行后再给到下一层管道。错误写法中是将分组后的结果进行 count,是计算分组后结果的总数(计算有几个分组),而不是对分组中的各个组别计数。
错误写法的 MongoDB查询语句: