> For the complete documentation index, see [llms.txt](https://suhantudor.gitbook.io/crud-node/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://suhantudor.gitbook.io/crud-node/reference/api-reference/groupbydocuments.md).

# groupByDocuments 🆕

Add GROUP BY clause (set the grouping options of the result set).

**Signature**

{% tabs %}
{% tab title="MySQL" %}

```javascript
groupByDocuments<T extends string>(session: MySQLSession, groupBy: Group<S, T>): Promise<Array<IDocument<T>>>;
```

{% endtab %}

{% tab title="MySQLX" %}

```javascript
groupByDocuments<T extends string>(session: MySQLXSession, groupBy: Group<S, T>): Promise<Array<IDocument<T>>>;
```

{% endtab %}
{% endtabs %}

**Example**

{% tabs %}
{% tab title="MySQL" %}

```javascript
// employeeRouter.{ts|js}
import { GroupBy } from 'crud-node';

import { employeeController } from './employeeController';
import { EmployeeProps } from './schemas/employee';

const transacted = true;

await db.usingSession(async (session) => {
  const data = await employeeController.groupByDocuments<'fired' | EmployeeProps.createdAt>(
    session,
    GroupBy<EmployeeProps, 'fired' | EmployeeProps.createdAt>()
      .fields(EmployeeProps.createdAt)
      .aggregate(EmployeeProps._id, 'fired', AGG.COUNT)
      .toCriteria(),
  );
  return data;
}, transacted);
```

{% endtab %}

{% tab title="MySQLX" %}

```javascript
// employeeRouter.{ts|js}
import { GroupBy } from 'crud-node';

import { employeeController } from './employeeController';
import { EmployeeProps } from './schemas/employee';

const transacted = true;

await db.usingSession(async (session) => {
  const data = await employeeController.groupByDocuments<'fired' | EmployeeProps.createdAt>(
    session,
    GroupBy<EmployeeProps, 'fired' | EmployeeProps.createdAt>()
      .fields(EmployeeProps.createdAt)
      .aggregate(EmployeeProps._id, 'fired', AGG.COUNT)
      .toCriteria(),
  );
  return data;
}, transacted);
```

{% endtab %}
{% endtabs %}
