# $cardinality

`$cardinality` returns the number of distinct values in a field.

All matching field values are deduplicated, then counted.

If `missing` is provided, documents without the field are treated as that fallback key
(which can increase the distinct count by at most one extra value).

### Compatibility

| Field Type | Supported |
|------------|-----------|
| TEXT | No |
| U64/I64/F64 | Yes |
| DATE | Yes |
| BOOL | Yes |
| KEYWORD | Yes |
| FACET | No |

Field must be `FAST`.

### Arguments

| Argument | Type | Required | Description |
|----------|------|----------|-------------|
| `field` | `string` | Yes | Field to aggregate. |
| `missing` | `string \| number` | No | Fallback key for missing fields. |

<Tabs>

<Tab title="TypeScript">
```ts
await index.aggregate({
  aggregations: {
    unique_users: { $cardinality: { field: "userId" } },
  },
});
```
</Tab>

<Tab title="Python">
```python
index.aggregate(
    aggregations={"unique_users": {"$cardinality": {"field": "userId"}}}
)
```
</Tab>

<Tab title="Redis CLI">
```bash
SEARCH.AGGREGATE events '{}' '{"unique_users": {"$cardinality": {"field": "userId"}}}'
```
</Tab>

</Tabs>


### Output

```json
{ "unique_categories": { "value": 3 } }
```
