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

# Class: ObjectSet<Schema, Name, Row>

> A result relation.

[browser](/api/modules/browser).ObjectSet

A result relation. Projection and grouping deliberately carry no object identity.

## Type parameters

| Name | Type |
| :- | :- |
| `Schema` | extends [`ObjectQuerySchema`](/api/modules/browser#objectqueryschema) |
| `Name` | extends keyof `Schema` & `string` |
| `Row` | `Schema`\[`Name`]\[`"row"`] |

## Hierarchy

* [`ObjectResultQuery`](/api/classes/browser.ObjectResultQuery)\<`Row` extends \{ `_id`: `unknown` ; `_creationTime`: `unknown`  } ? [`CollectionRow`](/api/modules/browser#collectionrow)\<`Row`> : `Readonly`\<`Partial`\<`Row`>>>

  ↳ **`ObjectSet`**

## Properties

### context

• `Protected` `Readonly` **context**: [`Context`](/api/modules/browser#context)

#### Inherited from

[ObjectResultQuery](/api/classes/browser.ObjectResultQuery).[context](/api/classes/browser.ObjectResultQuery#context)

***

### expression

• `Protected` `Readonly` **expression**: [`ObjectQueryExpression`](/api/modules/browser#objectqueryexpression)

#### Inherited from

[ObjectResultQuery](/api/classes/browser.ObjectResultQuery).[expression](/api/classes/browser.ObjectResultQuery#expression)

***

### collection

• `Readonly` **collection**: `Name`

## Methods

### declaration

▸ **declaration**(): [`ObjectQueryRequest`](/api/modules/apps#objectqueryrequest)

Capture the structured declaration for build-time consumer extraction.
This is a declaration only; it performs no authorization or data read.

#### Returns

[`ObjectQueryRequest`](/api/modules/apps#objectqueryrequest)

#### Inherited from

[ObjectResultQuery](/api/classes/browser.ObjectResultQuery).[declaration](/api/classes/browser.ObjectResultQuery#declaration)

***

### describe

▸ **describe**(`options?`): `Promise`\<[`PreparedObjectQuery`](/api/modules/apps#preparedobjectquery)>

#### Parameters

| Name | Type |
| :- | :- |
| `options?` | [`ObservationOptions`](/api/modules/browser#observationoptions) |

#### Returns

`Promise`\<[`PreparedObjectQuery`](/api/modules/apps#preparedobjectquery)>

#### Inherited from

[ObjectResultQuery](/api/classes/browser.ObjectResultQuery).[describe](/api/classes/browser.ObjectResultQuery#describe)

***

### read

▸ **read**(`options?`): `Promise`\<`Readonly`\<[`ObjectQueryValue`](/api/modules/apps#objectqueryvalue)\<`Row` extends \{ `_id`: `unknown` ; `_creationTime`: `unknown`  } ? [`CollectionRow`](/api/modules/browser#collectionrow)\<`Row`> : `Readonly`\<`Partial`\<`Row`>>> & \{ `basis`: `string` ; `binding`: `string`  }>>

#### Parameters

| Name | Type |
| :- | :- |
| `options?` | [`ObservationOptions`](/api/modules/browser#observationoptions) |

#### Returns

`Promise`\<`Readonly`\<[`ObjectQueryValue`](/api/modules/apps#objectqueryvalue)\<`Row` extends \{ `_id`: `unknown` ; `_creationTime`: `unknown`  } ? [`CollectionRow`](/api/modules/browser#collectionrow)\<`Row`> : `Readonly`\<`Partial`\<`Row`>>> & \{ `basis`: `string` ; `binding`: `string`  }>>

#### Inherited from

[ObjectResultQuery](/api/classes/browser.ObjectResultQuery).[read](/api/classes/browser.ObjectResultQuery#read)

***

### watch

▸ **watch**(`listener`): () => `void`

#### Parameters

| Name | Type |
| :- | :- |
| `listener` | (`value`: [`QueryObservation`](/api/modules/browser#queryobservation)\<`Readonly`\<[`ObjectQueryValue`](/api/modules/apps#objectqueryvalue)\<`Row` extends \{ `_id`: `unknown` ; `_creationTime`: `unknown`  } ? [`CollectionRow`](/api/modules/browser#collectionrow)\<`Row`> : `Readonly`\<`Partial`\<`Row`>>> & \{ `basis`: `string` ; `binding`: `string`  }>>) => `void` |

#### Returns

`fn`

▸ (): `void`

##### Returns

`void`

#### Inherited from

[ObjectResultQuery](/api/classes/browser.ObjectResultQuery).[watch](/api/classes/browser.ObjectResultQuery#watch)

***

### page

▸ **page**(`options?`): `Promise`\<[`ObjectQueryPage`](/api/modules/browser#objectquerypage)\<`Row` extends \{ `_id`: `unknown` ; `_creationTime`: `unknown`  } ? [`CollectionRow`](/api/modules/browser#collectionrow)\<`Row`> : `Readonly`\<`Partial`\<`Row`>>>>

#### Parameters

| Name | Type |
| :- | :- |
| `options` | [`ObservationOptions`](/api/modules/browser#observationoptions) & \{ `page_size?`: `number` ; `cursor?`: `string`  } |

#### Returns

`Promise`\<[`ObjectQueryPage`](/api/modules/browser#objectquerypage)\<`Row` extends \{ `_id`: `unknown` ; `_creationTime`: `unknown`  } ? [`CollectionRow`](/api/modules/browser#collectionrow)\<`Row`> : `Readonly`\<`Partial`\<`Row`>>>>

#### Inherited from

[ObjectResultQuery](/api/classes/browser.ObjectResultQuery).[page](/api/classes/browser.ObjectResultQuery#page)

***

### run

▸ **run**(`bounds?`): `Promise`\<[`QuestionRequest`](/api/classes/browser.QuestionRequest)\<\{ `rows`: \{ `kind`: `"table"` ; `row`: `Row` extends \{ `_id`: `unknown` ; `_creationTime`: `unknown`  } ? [`CollectionRow`](/api/modules/browser#collectionrow)\<`Row`> : `Readonly`\<`Partial`\<`Row`>>  }  }>>

Explicit durable execution. The returned request owns observation, paging and cleanup.

#### Parameters

| Name | Type |
| :- | :- |
| `bounds?` | [`AnswerBounds`](/api/modules/browser#answerbounds) |

#### Returns

`Promise`\<[`QuestionRequest`](/api/classes/browser.QuestionRequest)\<\{ `rows`: \{ `kind`: `"table"` ; `row`: `Row` extends \{ `_id`: `unknown` ; `_creationTime`: `unknown`  } ? [`CollectionRow`](/api/modules/browser#collectionrow)\<`Row`> : `Readonly`\<`Partial`\<`Row`>>  }  }>>

#### Inherited from

[ObjectResultQuery](/api/classes/browser.ObjectResultQuery).[run](/api/classes/browser.ObjectResultQuery#run)

***

### explain

▸ **explain**(`bounds?`): `Promise`\<[`ObjectQueryExplanation`](/api/modules/browser#objectqueryexplanation)>

#### Parameters

| Name | Type |
| :- | :- |
| `bounds?` | [`AnswerBounds`](/api/modules/browser#answerbounds) |

#### Returns

`Promise`\<[`ObjectQueryExplanation`](/api/modules/browser#objectqueryexplanation)>

#### Inherited from

[ObjectResultQuery](/api/classes/browser.ObjectResultQuery).[explain](/api/classes/browser.ObjectResultQuery#explain)

***

### orderBy

▸ **orderBy**(`...fields`): [`ObjectResultQuery`](/api/classes/browser.ObjectResultQuery)\<`Row` extends \{ `_id`: `unknown` ; `_creationTime`: `unknown`  } ? [`CollectionRow`](/api/modules/browser#collectionrow)\<`Row`> : `Readonly`\<`Partial`\<`Row`>>>

#### Parameters

| Name | Type |
| :- | :- |
| `...fields` | readonly \{ `field`: `Extract`\<keyof `Row` extends \{ `_id`: `unknown` ; `_creationTime`: `unknown`  } ? [`CollectionRow`](/api/modules/browser#collectionrow)\<`Row`> : `Readonly`\<`Partial`\<`Row`>>, `string`> ; `order?`: `"asc"` \| `"desc"`  }\[] |

#### Returns

[`ObjectResultQuery`](/api/classes/browser.ObjectResultQuery)\<`Row` extends \{ `_id`: `unknown` ; `_creationTime`: `unknown`  } ? [`CollectionRow`](/api/modules/browser#collectionrow)\<`Row`> : `Readonly`\<`Partial`\<`Row`>>>

#### Inherited from

[ObjectResultQuery](/api/classes/browser.ObjectResultQuery).[orderBy](/api/classes/browser.ObjectResultQuery#orderby)

***

### where

▸ **where**\<`Filters`>(`filters`): [`ObjectSet`](/api/classes/browser.ObjectSet)\<`Schema`, `Name`, [`NarrowCollectionRow`](/api/modules/browser#narrowcollectionrow)\<`Row`, `Filters`>>

#### Type parameters

| Name | Type |
| :- | :- |
| `Filters` | extends readonly [`SupportedFilter`](/api/modules/browser#supportedfilter)\<`Row`, `Schema`\[`Name`]\[`"predicates"`]>\[] |

#### Parameters

| Name | Type |
| :- | :- |
| `filters` | `Filters` |

#### Returns

[`ObjectSet`](/api/classes/browser.ObjectSet)\<`Schema`, `Name`, [`NarrowCollectionRow`](/api/modules/browser#narrowcollectionrow)\<`Row`, `Filters`>>

***

### related

▸ **related**\<`Alias`>(`relationship`): [`ObjectSet`](/api/classes/browser.ObjectSet)\<`Schema`, `Extract`\<`Schema`\[`Name`]\[`"relationships"`]\[`Alias`], keyof `Schema` & `string`>>

#### Type parameters

| Name | Type |
| :- | :- |
| `Alias` | extends [`TraversableAlias`](/api/modules/browser#traversablealias)\<`Schema`, `Name`> |

#### Parameters

| Name | Type |
| :- | :- |
| `relationship` | `Alias` |

#### Returns

[`ObjectSet`](/api/classes/browser.ObjectSet)\<`Schema`, `Extract`\<`Schema`\[`Name`]\[`"relationships"`]\[`Alias`], keyof `Schema` & `string`>>

***

### union

▸ **union**(`this`, `right`): [`ObjectSet`](/api/classes/browser.ObjectSet)\<`Schema`, `Name`>

#### Parameters

| Name | Type |
| :- | :- |
| `this` | `Schema`\[`Name`]\[`"keyed"`] extends `false` ? `never` : [`ObjectSet`](/api/classes/browser.ObjectSet)\<`Schema`, `Name`, `Row`> |
| `right` | [`ObjectSet`](/api/classes/browser.ObjectSet)\<`Schema`, `Name`, `any`> |

#### Returns

[`ObjectSet`](/api/classes/browser.ObjectSet)\<`Schema`, `Name`>

***

### intersect

▸ **intersect**(`this`, `right`): [`ObjectSet`](/api/classes/browser.ObjectSet)\<`Schema`, `Name`, `Row`>

#### Parameters

| Name | Type |
| :- | :- |
| `this` | `Schema`\[`Name`]\[`"keyed"`] extends `false` ? `never` : [`ObjectSet`](/api/classes/browser.ObjectSet)\<`Schema`, `Name`, `Row`> |
| `right` | [`ObjectSet`](/api/classes/browser.ObjectSet)\<`Schema`, `Name`, `any`> |

#### Returns

[`ObjectSet`](/api/classes/browser.ObjectSet)\<`Schema`, `Name`, `Row`>

***

### subtract

▸ **subtract**(`this`, `right`): [`ObjectSet`](/api/classes/browser.ObjectSet)\<`Schema`, `Name`, `Row`>

#### Parameters

| Name | Type |
| :- | :- |
| `this` | `Schema`\[`Name`]\[`"keyed"`] extends `false` ? `never` : [`ObjectSet`](/api/classes/browser.ObjectSet)\<`Schema`, `Name`, `Row`> |
| `right` | [`ObjectSet`](/api/classes/browser.ObjectSet)\<`Schema`, `Name`, `any`> |

#### Returns

[`ObjectSet`](/api/classes/browser.ObjectSet)\<`Schema`, `Name`, `Row`>

***

### select

▸ **select**\<`Result`>(`shape`): [`ObjectResultQuery`](/api/classes/browser.ObjectResultQuery)\<`Result`>

#### Type parameters

| Name |
| :- |
| `Result` |

#### Parameters

| Name | Type |
| :- | :- |
| `shape` | [`ObjectProjection`](/api/modules/browser#objectprojection)\<`Name`, `Result`> |

#### Returns

[`ObjectResultQuery`](/api/classes/browser.ObjectResultQuery)\<`Result`>

▸ **select**\<`Fields`>(`...fields`): [`ObjectResultQuery`](/api/classes/browser.ObjectResultQuery)\<`Readonly`\<`Partial`\<`Pick`\<`Row`, `Fields`\[`number`]>>>>

#### Type parameters

| Name | Type |
| :- | :- |
| `Fields` | extends readonly keyof `Row` & `string`\[] |

#### Parameters

| Name | Type |
| :- | :- |
| `...fields` | `Fields` |

#### Returns

[`ObjectResultQuery`](/api/classes/browser.ObjectResultQuery)\<`Readonly`\<`Partial`\<`Pick`\<`Row`, `Fields`\[`number`]>>>>

***

### aggregate

▸ **aggregate**\<`Result`>(`shape`): [`ObjectResultQuery`](/api/classes/browser.ObjectResultQuery)\<`Result`>

#### Type parameters

| Name |
| :- |
| `Result` |

#### Parameters

| Name | Type |
| :- | :- |
| `shape` | [`ObjectAggregation`](/api/modules/browser#objectaggregation)\<`Name`, `Result`> |

#### Returns

[`ObjectResultQuery`](/api/classes/browser.ObjectResultQuery)\<`Result`>

***

### groupBy

▸ **groupBy**\<`K`>(`keys`): `Object`

#### Type parameters

| Name | Type |
| :- | :- |
| `K` | extends `Record`\<`string`, [`Scalar`](/api/modules/server#scalar)\<`any`>> |

#### Parameters

| Name | Type |
| :- | :- |
| `keys` | (`row`: [`ObjectQueryRow`](/api/modules/browser#objectqueryrow)\<`Row`>) => `K` |

#### Returns

`Object`

| Name | Type |
| :- | :- |
| `aggregate` | \<M>(`read`: (`m`: [`ObjectQueryMeasures`](/api/modules/browser#objectquerymeasures)\<`Row`>) => `M`) => [`ObjectResultQuery`](/api/classes/browser.ObjectResultQuery)\<[`RelationColumns`](/api/modules/browser#relationcolumns)\<[`Keys`](/api/modules/browser#keys)\<`Row`, `K`> & [`Measured`](/api/modules/browser#measured)\<`M`>>> |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.