> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bijection.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Interface: FilterBuilder<TableInfo>

> An interface for defining filters in queries.

[server](/api/modules/server).FilterBuilder

An interface for defining filters in queries.

`FilterBuilder` has various methods that produce [Expression](/api/classes/server.Expression)s.
These expressions can be nested together along with constants to express
a filter predicate.

`FilterBuilder` is used within [filter](/api/interfaces/server.OrderedQuery#filter) to create query
filters.

Here are the available methods:

| | |
| - | - |
| **Comparisons** | Error when `l` and `r` are not the same type. |
| [`eq(l, r)`](#eq) | `l === r` |
| [`neq(l, r)`](#neq) | `l !== r` |
| [`lt(l, r)`](#lt) | `l < r` |
| [`lte(l, r)`](#lte) | `l <= r` |
| [`gt(l, r)`](#gt) | `l > r` |
| [`gte(l, r)`](#gte) | `l >= r` |
| | |
| **Arithmetic** | Error when `l` and `r` are not the same type. |
| [`add(l, r)`](#add) | `l + r` |
| [`sub(l, r)`](#sub) | `l - r` |
| [`mul(l, r)`](#mul) | `l * r` |
| [`div(l, r)`](#div) | `l / r` |
| [`mod(l, r)`](#mod) | `l % r` |
| [`neg(x)`](#neg) | `-x` |
| | |
| **Logic** | Error if any param is not a `bool`. |
| [`not(x)`](#not) | `!x` |
| [`and(a, b, ..., z)`](#and) | `a && b && ... && z` |
| [`or(a, b, ..., z)`](#or) | \<code>a \|\| b \|\| ... \|\| z\</code> |
| | |
| **Other** | |
| [`field(fieldPath)`](#field) | Evaluates to the field at `fieldPath`. |

## Type parameters

| Name | Type |
| :- | :- |
| `TableInfo` | extends [`GenericTableInfo`](/api/modules/server#generictableinfo) |

## Methods

### eq

▸ **eq**\<`T`>(`l`, `r`): [`Expression`](/api/classes/server.Expression)\<`boolean`>

`l === r`

#### Type parameters

| Name | Type |
| :- | :- |
| `T` | extends `undefined` \| [`Value`](/api/modules/values#value) |

#### Parameters

| Name | Type |
| :- | :- |
| `l` | [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`T`> |
| `r` | [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`T`> |

#### Returns

[`Expression`](/api/classes/server.Expression)\<`boolean`>

***

### neq

▸ **neq**\<`T`>(`l`, `r`): [`Expression`](/api/classes/server.Expression)\<`boolean`>

`l !== r`

#### Type parameters

| Name | Type |
| :- | :- |
| `T` | extends `undefined` \| [`Value`](/api/modules/values#value) |

#### Parameters

| Name | Type |
| :- | :- |
| `l` | [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`T`> |
| `r` | [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`T`> |

#### Returns

[`Expression`](/api/classes/server.Expression)\<`boolean`>

***

### lt

▸ **lt**\<`T`>(`l`, `r`): [`Expression`](/api/classes/server.Expression)\<`boolean`>

`l < r`

#### Type parameters

| Name | Type |
| :- | :- |
| `T` | extends [`Value`](/api/modules/values#value) |

#### Parameters

| Name | Type |
| :- | :- |
| `l` | [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`T`> |
| `r` | [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`T`> |

#### Returns

[`Expression`](/api/classes/server.Expression)\<`boolean`>

***

### lte

▸ **lte**\<`T`>(`l`, `r`): [`Expression`](/api/classes/server.Expression)\<`boolean`>

`l <= r`

#### Type parameters

| Name | Type |
| :- | :- |
| `T` | extends [`Value`](/api/modules/values#value) |

#### Parameters

| Name | Type |
| :- | :- |
| `l` | [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`T`> |
| `r` | [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`T`> |

#### Returns

[`Expression`](/api/classes/server.Expression)\<`boolean`>

***

### gt

▸ **gt**\<`T`>(`l`, `r`): [`Expression`](/api/classes/server.Expression)\<`boolean`>

`l > r`

#### Type parameters

| Name | Type |
| :- | :- |
| `T` | extends [`Value`](/api/modules/values#value) |

#### Parameters

| Name | Type |
| :- | :- |
| `l` | [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`T`> |
| `r` | [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`T`> |

#### Returns

[`Expression`](/api/classes/server.Expression)\<`boolean`>

***

### gte

▸ **gte**\<`T`>(`l`, `r`): [`Expression`](/api/classes/server.Expression)\<`boolean`>

`l >= r`

#### Type parameters

| Name | Type |
| :- | :- |
| `T` | extends [`Value`](/api/modules/values#value) |

#### Parameters

| Name | Type |
| :- | :- |
| `l` | [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`T`> |
| `r` | [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`T`> |

#### Returns

[`Expression`](/api/classes/server.Expression)\<`boolean`>

***

### add

▸ **add**\<`T`>(`l`, `r`): [`Expression`](/api/classes/server.Expression)\<`T`>

`l + r`

#### Type parameters

| Name | Type |
| :- | :- |
| `T` | extends [`NumericValue`](/api/modules/values#numericvalue) |

#### Parameters

| Name | Type |
| :- | :- |
| `l` | [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`T`> |
| `r` | [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`T`> |

#### Returns

[`Expression`](/api/classes/server.Expression)\<`T`>

***

### sub

▸ **sub**\<`T`>(`l`, `r`): [`Expression`](/api/classes/server.Expression)\<`T`>

`l - r`

#### Type parameters

| Name | Type |
| :- | :- |
| `T` | extends [`NumericValue`](/api/modules/values#numericvalue) |

#### Parameters

| Name | Type |
| :- | :- |
| `l` | [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`T`> |
| `r` | [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`T`> |

#### Returns

[`Expression`](/api/classes/server.Expression)\<`T`>

***

### mul

▸ **mul**\<`T`>(`l`, `r`): [`Expression`](/api/classes/server.Expression)\<`T`>

`l * r`

#### Type parameters

| Name | Type |
| :- | :- |
| `T` | extends [`NumericValue`](/api/modules/values#numericvalue) |

#### Parameters

| Name | Type |
| :- | :- |
| `l` | [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`T`> |
| `r` | [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`T`> |

#### Returns

[`Expression`](/api/classes/server.Expression)\<`T`>

***

### div

▸ **div**\<`T`>(`l`, `r`): [`Expression`](/api/classes/server.Expression)\<`T`>

`l / r`

#### Type parameters

| Name | Type |
| :- | :- |
| `T` | extends [`NumericValue`](/api/modules/values#numericvalue) |

#### Parameters

| Name | Type |
| :- | :- |
| `l` | [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`T`> |
| `r` | [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`T`> |

#### Returns

[`Expression`](/api/classes/server.Expression)\<`T`>

***

### mod

▸ **mod**\<`T`>(`l`, `r`): [`Expression`](/api/classes/server.Expression)\<`T`>

`l % r`

#### Type parameters

| Name | Type |
| :- | :- |
| `T` | extends [`NumericValue`](/api/modules/values#numericvalue) |

#### Parameters

| Name | Type |
| :- | :- |
| `l` | [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`T`> |
| `r` | [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`T`> |

#### Returns

[`Expression`](/api/classes/server.Expression)\<`T`>

***

### neg

▸ **neg**\<`T`>(`x`): [`Expression`](/api/classes/server.Expression)\<`T`>

`-x`

#### Type parameters

| Name | Type |
| :- | :- |
| `T` | extends [`NumericValue`](/api/modules/values#numericvalue) |

#### Parameters

| Name | Type |
| :- | :- |
| `x` | [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`T`> |

#### Returns

[`Expression`](/api/classes/server.Expression)\<`T`>

***

### and

▸ **and**(`...exprs`): [`Expression`](/api/classes/server.Expression)\<`boolean`>

`exprs[0] && exprs[1] && ... && exprs[n]`

#### Parameters

| Name | Type |
| :- | :- |
| `...exprs` | [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`boolean`>\[] |

#### Returns

[`Expression`](/api/classes/server.Expression)\<`boolean`>

***

### or

▸ **or**(`...exprs`): [`Expression`](/api/classes/server.Expression)\<`boolean`>

`exprs[0] || exprs[1] || ... || exprs[n]`

#### Parameters

| Name | Type |
| :- | :- |
| `...exprs` | [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`boolean`>\[] |

#### Returns

[`Expression`](/api/classes/server.Expression)\<`boolean`>

***

### not

▸ **not**(`x`): [`Expression`](/api/classes/server.Expression)\<`boolean`>

`!x`

#### Parameters

| Name | Type |
| :- | :- |
| `x` | [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`boolean`> |

#### Returns

[`Expression`](/api/classes/server.Expression)\<`boolean`>

***

### field

▸ **field**\<`FieldPath`>(`fieldPath`): [`Expression`](/api/classes/server.Expression)\<[`FieldTypeFromFieldPath`](/api/modules/server#fieldtypefromfieldpath)\<[`DocumentByInfo`](/api/modules/server#documentbyinfo)\<`TableInfo`>, `FieldPath`>>

Evaluates to the field at the given `fieldPath`.

For example, in [filter](/api/interfaces/server.OrderedQuery#filter) this can be used to examine the values being filtered.

#### Example

On this object:

```
{
  "user": {
    "isActive": true
  }
}
```

`field("user.isActive")` evaluates to `true`.

#### Type parameters

| Name | Type |
| :- | :- |
| `FieldPath` | extends `string` |

#### Parameters

| Name | Type |
| :- | :- |
| `fieldPath` | `FieldPath` |

#### Returns

[`Expression`](/api/classes/server.Expression)\<[`FieldTypeFromFieldPath`](/api/modules/server#fieldtypefromfieldpath)\<[`DocumentByInfo`](/api/modules/server#documentbyinfo)\<`TableInfo`>, `FieldPath`>>
