Mongo JPA:多组操作

问题描述 投票:0回答:1

给定以下数据集:

类别 约会 数量
水果 2023-01-01 1
水果 2023-01-02 2
2023-01-03 3
坚果 2023-01-04 4
坚果 2023-01-05 5
坚果 2023-01-06 6

是否有可能在 Mongo JPA 中进行多组聚合以产生:

  • 每个类别一行
  • 该类别中的行数
  • 数量
    max(date)
类别 计数 last_amount
水果 2 2
1 3
坚果 3 6

这在具有一些 SQL 分组和可能的子查询的关系数据库中应该是可能的,但在 Mongo 中似乎很难实现。我可以在一次聚合中获得行数,但似乎我需要多次操作才能实现我的需要。

mongodb spring-data-jpa spring-data-mongodb
1个回答
0
投票

试试这个:

db.collection.aggregate([
  {
    "$addFields": {
      "dateValue": {
        "$toDate": "$date"
      }
    }
  },
  {
    "$sort": {
      dateValue: 1
    }
  },
  {
    "$group": {
      "_id": "$category",
      "count": {
        "$sum": 1
      },
      "lastAmount": {
        "$last": "$amount"
      }
    }
  }
])

在此查询中,我们首先将字符串日期转换为日期对象。如果您的日期已存储为日期,则不需要此步骤。接下来,我们按日期升序对文档进行排序。最后,我们将它们按

category
分组,计算出
count
last_amount
.

游乐场链接。

© www.soinside.com 2019 - 2024. All rights reserved.