v0.24.x to v0.25.x
#
Aggregate Queries Return ArraysIn versions prior to v0.24.0
aggregate queries returned a single response with just the aggregated values. In v0.25.0
we have introduced a new groupBy
option that requires aggregates to return arrays.
When using aggregates without the groupBy the response will always contain a single record with your aggregated
values. If you specify a groupBy
you will get a response with a distinct group and the corresponding aggregated
values.
Given the following query
{ todoItemAggregate { count { id } sum { id } avg { id } min { id title created } max { id title created } }}
#
OldThe old response would look like
{ "data": { "todoItemAggregate": { "count": { "id": 5 }, "sum": { "id": 15 }, "avg": { "id": 3 }, "min": { "id": "1", "title": "Add Todo Item Resolver", "created": "2021-03-29T06:51:26.061Z" }, "max": { "id": "5", "title": "How to create item With Sub Tasks", "created": "2021-03-29T06:51:26.061Z" } } }}
#
NewThe new response will look like
{ "data": { "todoItemAggregate": [ { "count": { "id": 5 }, "sum": { "id": 15 }, "avg": { "id": 3 }, "min": { "id": "1", "title": "Add Todo Item Resolver", "created": "2021-03-29T06:51:26.061Z" }, "max": { "id": "5", "title": "How to create item With Sub Tasks", "created": "2021-03-29T06:51:26.061Z" } } ] }}
#
New Aggregate GroupByThe new response format really shines when using the groupBy
query
Given the following aggregate grouping on completed
{ todoItemAggregate { groupBy { completed } count { id } sum { id } avg { id } min { id title created } max { id title created } }}
You'll get the following response with record for each distinct group
{ "data": { "todoItemAggregate": [ { "groupBy": { "completed": false }, "count": { "id": 4 }, "sum": { "id": 14 }, "avg": { "id": 3.5 }, "min": { "id": "2", "title": "Add Todo Item Resolver", "created": "2021-03-29T06:51:26.061Z" }, "max": { "id": "5", "title": "How to create item With Sub Tasks", "created": "2021-03-29T06:51:26.061Z" } }, { "groupBy": { "completed": true }, "count": { "id": 1 }, "sum": { "id": 1 }, "avg": { "id": 1 }, "min": { "id": "1", "title": "Create Nest App", "created": "2021-03-29T06:51:26.061Z" }, "max": { "id": "1", "title": "Create Nest App", "created": "2021-03-29T06:51:26.061Z" } } ] }}