【问题标题】:spring mongoDB aggregation with sort doesn't work带有排序的spring mongoDB聚合不起作用
【发布时间】: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


【解决方案1】:

分组后,resetDateTime 字段是下一个管道的 id 字段,因此您的排序应该在 id 字段上,而不是在 resetDateTime 上。

SortOperation sort = Aggregation.sort(Sort.Direction.DESC, "_id");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 2020-12-25
    • 1970-01-01
    • 2020-07-27
    • 2016-08-15
    • 2020-07-11
    • 1970-01-01
    相关资源
    最近更新 更多