# Aggregations

{% hint style="success" %}
This is the official documentation of the `@forestadmin/agent` Node.js agent.
{% endhint %}

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).

#### Count records

The simplest possible query is to count records from a collection.

```json
{ "operation": "Count", "field": null, "groups": [] }
```

Equivalent in SQL: `SELECT COUNT(*) FROM books`

Equivalent in Mongo: `{ $count: 'value' }`

#### Average rating

```json
{ "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

```json
{ "operation": "Average", "field": "rating", "groups": [{ "field": "author:name" }] }
```

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

```json
{
  "operation": "Average",
  "field": "rating",
  "groups": [
    { "field": "authorName" },
    { "field": "createdAt", "operation": "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" } } }`


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.forestadmin.com/developer-guide-agents-nodejs/data-sources/getting-started/queries/aggregations.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
