This is the official documentation of the @forestadmin/agent Node.js agent.
An aggregation represents a query to a collection that aggregates on records.
They are simple 3 keys objects:
An operation that specifies how the data should be aggregated (Count, Sum, Avg, Max, Min)
A field, that specifies the data that should be aggregated
Groups, which may be rounded when they are Dates
Supported group rounding operations are Year, Month, Week, Day, and null (let the field as it is).
The simplest possible query is to count records from a collection.
{ "operation": "Count", "field": null, "groups": [] }
Equivalent in SQL: SELECT COUNT(*) FROM books
Equivalent in Mongo: { $count: 'value' }
{ "operation": "Average", "field": "rating", "groups": [] }
Equivalent in SQL: SELECT AVG(rating) FROM books
Equivalent in Mongo: { $group: { _id: null, rating: { $avg: "$rating" } } }
Average rating by author
Equivalent in SQL: SELECT authorName, AVG(rating) FROM books GROUP BY 1
Equivalent in Mongo: { $group: { _id: "$authorName", rating: { $avg: "$rating" } } }
Average rating by author and year
Equivalent in SQL: SELECT authorName, TO_YEAR(createdAt), AVG(rating) FROM books GROUP BY 1, 2
Equivalent in Mongo: { $group: { _id: { author: "$authorName", created: { $year: "$createdAt" }, rating: { $avg: "$rating" } } }