v0.24.x to v0.25.x
Aggregate Queries Return Arrays
In 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
}
}
}
Old
The 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"
}
}
}
}
New
The 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 GroupBy
The 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"
}
}
]
}
}