【发布时间】:2019-12-18 14:54:30
【问题描述】:
我试图在我的程序中将聚合与排序操作结合起来,但它似乎不起作用。
GroupOperation groupByDate = Aggregation.group("resetDateTime").push("$$ROOT").as("resetDataList");
MatchOperation untilDate = Aggregation.match(new Criteria("resetDateTime").lte(LocalDateTime.of(startDate.toLocalDate(), LocalTime.MAX)));
MatchOperation relevantId = Aggregation.match(new Criteria("id").is(id));
SortOperation sort = Aggregation.sort(Sort.Direction.DESC, "resetDateTime");
Aggregation aggregation = Aggregation.newAggregation(relevantId , untilDate, sort, groupByDate);
将 "sort" 参数放在 "groupByDate" 参数之前和之后都不起作用。 输出未排序。 有谁知道为什么它不起作用?
这是没有排序参数的聚合操作的输出(我打印到每个组的“dateTime”字段:
[ResetDataGroupByDate(resetDateTime=2019-10-14T17:37:35.044), ResetDataGroupByDate(resetDateTime=2019-10-13T17:37:35.015), ResetDataGroupByDate(resetDateTime=2019-10-12T17:37:35.942), ResetDataGroupByDate(resetDateTime=2019-10-03T17:37:35.137), ResetDataGroupByDate(resetDateTime=2019-10-11T17:37:35.885), ResetDataGroupByDate(resetDateTime=2019-10-07T17:37:35.624), ResetDataGroupByDate(resetDateTime=2019-10-09T17:37:35.737), ResetDataGroupByDate(resetDateTime=2019-10-02T17:37:35.096), ResetDataGroupByDate(resetDateTime=2019-10-01T17:37:35.826), ResetDataGroupByDate(resetDateTime=2019-10-10T17:37:35.834), ResetDataGroupByDate(resetDateTime=2019-10-15T17:37:35.106), ResetDataGroupByDate(resetDateTime=2019-10-05T17:37:35.350), ResetDataGroupByDate(resetDateTime=2019-10-04T17:37:35.193), ResetDataGroupByDate(resetDateTime=2019-10-06T17:37:35.397), ResetDataGroupByDate(resetDateTime=2019-10-08T17:37:35.706)]
【问题讨论】:
-
“groupByDate”阶段之后的输出(显示示例文档)是什么; 没有应用“排序”阶段。
-
嗨,我在问题正文中添加了输出。谢谢! @prasad_
-
您必须使用字段名称和所有内容发布输出。
-
完成了,我希望这对@prasad_ 更有帮助
-
文档格式为:
ResetDataGroupByDate(resetDateTime=2019-10-14T17:37:35.044)。我认为,在日期字段上应用排序需要是这样的:SortOperation sort = Aggregation.sort(Sort.Direction.DESC, "resetDateTime");-或-SortOperation sort = Aggregation.sort(Sort.Direction.DESC, "ResetDataGroupByDate.resetDateTime");。
标签: spring mongodb sorting aggregation