> ## 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: ProjectedQuery<TableInfo, Fields>

> A query whose output has been projected, before an order is defined.

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

A query whose output has been projected, before an order is defined.

## Type parameters

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

## Hierarchy

* [`ProjectedOrderedQuery`](/api/interfaces/server.ProjectedOrderedQuery)\<`TableInfo`, `Fields`>

  ↳ **`ProjectedQuery`**

## Methods

### filter

▸ **filter**(`predicate`): [`ProjectedQuery`](/api/interfaces/server.ProjectedQuery)\<`TableInfo`, `Fields`>

Filter the projected query's output. The predicate still evaluates the
original document, including properties the projection omits, so a filter
means exactly what it means on an unprojected query.

#### Parameters

| Name | Type |
| :- | :- |
| `predicate` | (`q`: [`FilterBuilder`](/api/interfaces/server.FilterBuilder)\<`TableInfo`>) => [`ExpressionOrValue`](/api/modules/server#expressionorvalue)\<`boolean`> |

#### Returns

[`ProjectedQuery`](/api/interfaces/server.ProjectedQuery)\<`TableInfo`, `Fields`>

#### Inherited from

[ProjectedOrderedQuery](/api/interfaces/server.ProjectedOrderedQuery).[filter](/api/interfaces/server.ProjectedOrderedQuery#filter)

***

### paginate

▸ **paginate**(`paginationOpts`): `Promise`\<[`PaginationResult`](/api/interfaces/server.PaginationResult)\<[`SelectedDocument`](/api/modules/server#selecteddocument)\<[`DocumentByInfo`](/api/modules/server#documentbyinfo)\<`TableInfo`>, `Fields`>>>

Load a page of projected results.

#### Parameters

| Name | Type |
| :- | :- |
| `paginationOpts` | [`PaginationOptions`](/api/interfaces/server.PaginationOptions) |

#### Returns

`Promise`\<[`PaginationResult`](/api/interfaces/server.PaginationResult)\<[`SelectedDocument`](/api/modules/server#selecteddocument)\<[`DocumentByInfo`](/api/modules/server#documentbyinfo)\<`TableInfo`>, `Fields`>>>

#### Inherited from

[ProjectedOrderedQuery](/api/interfaces/server.ProjectedOrderedQuery).[paginate](/api/interfaces/server.ProjectedOrderedQuery#paginate)

***

### collect

▸ **collect**(): `Promise`\<[`SelectedDocument`](/api/modules/server#selecteddocument)\<[`DocumentByInfo`](/api/modules/server#documentbyinfo)\<`TableInfo`>, `Fields`>\[]>

Return all of the projected results as an array.

#### Returns

`Promise`\<[`SelectedDocument`](/api/modules/server#selecteddocument)\<[`DocumentByInfo`](/api/modules/server#documentbyinfo)\<`TableInfo`>, `Fields`>\[]>

#### Inherited from

[ProjectedOrderedQuery](/api/interfaces/server.ProjectedOrderedQuery).[collect](/api/interfaces/server.ProjectedOrderedQuery#collect)

***

### take

▸ **take**(`n`): `Promise`\<[`SelectedDocument`](/api/modules/server#selecteddocument)\<[`DocumentByInfo`](/api/modules/server#documentbyinfo)\<`TableInfo`>, `Fields`>\[]>

Return the first `n` projected results.

#### Parameters

| Name | Type |
| :- | :- |
| `n` | `number` |

#### Returns

`Promise`\<[`SelectedDocument`](/api/modules/server#selecteddocument)\<[`DocumentByInfo`](/api/modules/server#documentbyinfo)\<`TableInfo`>, `Fields`>\[]>

#### Inherited from

[ProjectedOrderedQuery](/api/interfaces/server.ProjectedOrderedQuery).[take](/api/interfaces/server.ProjectedOrderedQuery#take)

***

### first

▸ **first**(): `Promise`\<`null` | [`SelectedDocument`](/api/modules/server#selecteddocument)\<[`DocumentByInfo`](/api/modules/server#documentbyinfo)\<`TableInfo`>, `Fields`>>

Return the first projected result, or `null`.

#### Returns

`Promise`\<`null` | [`SelectedDocument`](/api/modules/server#selecteddocument)\<[`DocumentByInfo`](/api/modules/server#documentbyinfo)\<`TableInfo`>, `Fields`>>

#### Inherited from

[ProjectedOrderedQuery](/api/interfaces/server.ProjectedOrderedQuery).[first](/api/interfaces/server.ProjectedOrderedQuery#first)

***

### unique

▸ **unique**(): `Promise`\<`null` | [`SelectedDocument`](/api/modules/server#selecteddocument)\<[`DocumentByInfo`](/api/modules/server#documentbyinfo)\<`TableInfo`>, `Fields`>>

Return the single projected result, or `null`; throw if there are more.

#### Returns

`Promise`\<`null` | [`SelectedDocument`](/api/modules/server#selecteddocument)\<[`DocumentByInfo`](/api/modules/server#documentbyinfo)\<`TableInfo`>, `Fields`>>

#### Inherited from

[ProjectedOrderedQuery](/api/interfaces/server.ProjectedOrderedQuery).[unique](/api/interfaces/server.ProjectedOrderedQuery#unique)

***

### order

▸ **order**(`order`): [`ProjectedOrderedQuery`](/api/interfaces/server.ProjectedOrderedQuery)\<`TableInfo`, `Fields`>

Define the order of the projected query's output.

#### Parameters

| Name | Type |
| :- | :- |
| `order` | `"asc"` \| `"desc"` |

#### Returns

[`ProjectedOrderedQuery`](/api/interfaces/server.ProjectedOrderedQuery)\<`TableInfo`, `Fields`>

***

### \[asyncIterator]

▸ **\[asyncIterator]**(): `AsyncIterator`\<[`SelectedDocument`](/api/modules/server#selecteddocument)\<[`DocumentByInfo`](/api/modules/server#documentbyinfo)\<`TableInfo`>, `Fields`>, `any`, `undefined`>

#### Returns

`AsyncIterator`\<[`SelectedDocument`](/api/modules/server#selecteddocument)\<[`DocumentByInfo`](/api/modules/server#documentbyinfo)\<`TableInfo`>, `Fields`>, `any`, `undefined`>

#### Inherited from

[ProjectedOrderedQuery](/api/interfaces/server.ProjectedOrderedQuery).[\[asyncIterator\]](/api/interfaces/server.ProjectedOrderedQuery#\[asynciterator])
