본문으로 건너뛰기

클래스: BaseQueryBuilder<TContext>

정의 위치: packages/db/src/query/builder/index.ts:135

타입 매개변수

TContext

TContext extends Context = Context

생성자

생성자

new BaseQueryBuilder<TContext>(query, resolveCollection?): BaseQueryBuilder<TContext>;

정의 위치: packages/db/src/query/builder/index.ts:138

매개변수

query

Partial&lt;QueryIR> = {}

resolveCollection?

CollectionResolver

반환값

BaseQueryBuilder&lt;TContext>

접근자

fn

가져오기 시그니처

get fn(): object;

정의 위치: packages/db/src/query/builder/index.ts:923

쿼리 빌더의 함수형 변형 각 행에 대해 호출되는 명령형 함수입니다. 경고: 이러한 함수는 쿼리 컴파일러에서 최적화할 수 없으며, 일부 유형의 최적화를 불가능하게 만들 수 있습니다.

예제
q.fn.select((row) => ({
name: row.user.name.toUpperCase(),
age: row.user.age + 1,
}))
반환값
having()
having(callback): QueryBuilder<TContext>;

각 집계 행에서 작동하는 함수를 사용하여 그룹화된 행을 필터링합니다. 경고: 쿼리 컴파일러에서 최적화할 수 없습니다.

매개변수
callback

(row) => any

집계된 행(select()가 호출된 경우 $selected 포함)을 받아 부울 값을 반환하는 함수입니다

반환값

QueryBuilder&lt;TContext>

함수형 having 필터가 적용된 QueryBuilder입니다

예제
// Functional having (not optimized)
query
.from({ posts: postsCollection })
.groupBy(({posts}) => posts.userId)
.select(({posts}) => ({ userId: posts.userId, count: count(posts.id) }))
.fn.having(({ $selected }) => $selected.count > 5)
select()
select<TFuncSelectResult>(callback): FnSelectQueryResult<TContext, TFuncSelectResult>;

각 행에 대해 작동하는 함수를 사용하여 필드를 선택합니다 경고: 쿼리 컴파일러에서 최적화할 수 없습니다

타입 매개변수
TFuncSelectResult

TFuncSelectResult

매개변수
callback

(row) => TFuncSelectResult

행을 받아 선택된 값을 반환하는 함수입니다

반환값

FnSelectQueryResult&lt;TContext, TFuncSelectResult>

함수형 선택이 적용된 QueryBuilder입니다

예제
// Functional select (not optimized)
query
.from({ users: usersCollection })
.fn.select(row => ({
name: row.users.name.toUpperCase(),
age: row.users.age + 1,
}))

자식 쿼리 빌더, 쿼리 표현식, 그리고 eq(), toArray(), materialize()와 같은 헬퍼는 fn.select()에서 반환할 수 없습니다. select()의 필드로 사용해야 컴파일러가 이를 쿼리 그래프에 추가할 수 있습니다.

where()
where(callback): QueryBuilder<TContext>;

각 행에 대해 작동하는 함수를 사용하여 행을 필터링합니다 경고: 쿼리 컴파일러에서 최적화할 수 없습니다

매개변수
callback

(row) => any

행을 받아 부울 값을 반환하는 함수입니다

반환값

QueryBuilder&lt;TContext>

함수형 필터링이 적용된 QueryBuilder입니다

예제
// Functional where (not optimized)
query
.from({ users: usersCollection })
.fn.where(row => row.users.name.startsWith('A'))

메서드

_getQuery()

_getQuery(): QueryIR;

정의 위치: packages/db/src/query/builder/index.ts:1015

반환값

QueryIR


distinct()

distinct(): QueryBuilder<TContext>;

정의 위치: packages/db/src/query/builder/index.ts:856

쿼리가 고유한 행을 반환하도록 지정합니다. 선택된 열을 기준으로 행의 중복을 제거합니다.

반환값

QueryBuilder&lt;TContext>

distinct가 활성화된 QueryBuilder입니다

예제

// Get countries our users are from
query
.from({ users: usersCollection })
.select(({users}) => ({ country: users.country }))
.distinct()

findOne()

findOne(): QueryBuilder<TContext & SingleResult>;

정의 위치: packages/db/src/query/builder/index.ts:876

쿼리가 단일 결과를 반환하도록 지정합니다

반환값

QueryBuilder&lt;TContext & SingleResult>

첫 번째 결과를 반환하는 QueryBuilder입니다

예제

// Get the user matching the query
query
.from({ users: usersCollection })
.where(({users}) => eq(users.id, 1))
.findOne()

from()

from<TSource>(source): QueryBuilder<ContextFromSource<TSource>>;

정의 위치: packages/db/src/query/builder/index.ts:248

쿼리의 소스 테이블 또는 서브쿼리를 지정합니다

타입 매개변수

TSource

TSource extends Source

매개변수

source

SingleSource&lt;TSource>

키가 테이블 별칭이고 값이 컬렉션 또는 서브쿼리인 단일 키-값 쌍을 가진 객체입니다

반환값

QueryBuilder&lt;ContextFromSource&lt;TSource>>

지정된 소스가 적용된 QueryBuilder입니다

예제

// Query from a collection
query.from({ users: usersCollection })

// Query from a subquery
const activeUsers = query.from({ u: usersCollection }).where(({u}) => u.active)
query.from({ activeUsers })

fullJoin()

fullJoin<TSource>(source, onCallback): QueryBuilder<MergeContextWithJoinType<TContext, SchemaFromSource<TSource>, "full">>;

정의 위치: packages/db/src/query/builder/index.ts:483

다른 테이블 또는 서브쿼리와 FULL JOIN을 수행합니다

타입 매개변수

TSource

TSource extends Source

매개변수

source

TSource

키가 테이블 별칭이고 값이 컬렉션 또는 서브쿼리인 단일 키-값 쌍을 가진 객체입니다

onCallback

JoinOnCallback&lt;MergeContextForJoinCallback&lt;TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl&lt;any, any, any, any, any> ? InferCollectionType&lt;any[any]> : TSource[K] extends CollectionOptionsIdentity&lt;any, any, any, any, any> ? InferCollectionType&lt;any[any]> : TSource[K] extends QueryBuilder&lt;TContext> ? ResultValue&lt;TContext> : never }[K] }>>

테이블 참조를 받아 조인 조건을 반환하는 함수입니다.

반환값

QueryBuilder&lt;MergeContextWithJoinType&lt;TContext, SchemaFromSource&lt;TSource>, "full">>

조인된 전체 테이블을 사용할 수 있는 QueryBuilder입니다.

예제

// Full join users with posts
query
.from({ users: usersCollection })
.fullJoin({ posts: postsCollection }, ({users, posts}) => eq(users.id, posts.userId))

groupBy()

groupBy(callback): QueryBuilder<TContext>;

정의 위치: packages/db/src/query/builder/index.ts:778

집계를 위해 하나 이상의 열을 기준으로 행을 그룹화합니다.

매개변수

callback

GroupByCallback&lt;TContext>

테이블 참조를 받아 그룹화할 필드(들)를 반환하는 함수입니다.

반환값

QueryBuilder&lt;TContext>

그룹화가 적용된 QueryBuilder입니다(SELECT 및 HAVING에서 집계 함수를 사용할 수 있습니다).

예제

// Group by a single column
query
.from({ posts: postsCollection })
.groupBy(({posts}) => posts.userId)
.select(({posts, count}) => ({
userId: posts.userId,
postCount: count()
}))

// Group by multiple columns
query
.from({ sales: salesCollection })
.groupBy(({sales}) => [sales.region, sales.category])
.select(({sales, sum}) => ({
region: sales.region,
category: sales.category,
totalSales: sum(sales.amount)
}))

having()

having(callback): QueryBuilder<TContext>;

정의 위치: packages/db/src/query/builder/index.ts:577

집계 조건을 기준으로 그룹화된 행을 필터링합니다.

매개변수

callback

WhereCallback&lt;TContext>

테이블 참조를 받고 표현식을 반환하는 함수입니다

반환값

QueryBuilder&lt;TContext>

having 조건이 적용된 QueryBuilder입니다.

예제

// Filter groups by count
query
.from({ posts: postsCollection })
.groupBy(({posts}) => posts.userId)
.having(({posts}) => gt(count(posts.id), 5))

// Filter by average
query
.from({ orders: ordersCollection })
.groupBy(({orders}) => orders.customerId)
.having(({orders}) => gt(avg(orders.total), 100))

// Multiple having calls are ANDed together
query
.from({ orders: ordersCollection })
.groupBy(({orders}) => orders.customerId)
.having(({orders}) => gt(count(orders.id), 5))
.having(({orders}) => gt(avg(orders.total), 100))

innerJoin()

innerJoin<TSource>(source, onCallback): QueryBuilder<MergeContextWithJoinType<TContext, SchemaFromSource<TSource>, "inner">>;

정의 위치: packages/db/src/query/builder/index.ts:457

다른 테이블 또는 서브쿼리와 INNER JOIN을 수행합니다.

타입 매개변수

TSource

TSource extends Source

매개변수

source

TSource

키가 테이블 별칭이고 값이 컬렉션 또는 서브쿼리인 단일 키-값 쌍을 가진 객체입니다

onCallback

JoinOnCallback&lt;MergeContextForJoinCallback&lt;TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl&lt;any, any, any, any, any> ? InferCollectionType&lt;any[any]> : TSource[K] extends CollectionOptionsIdentity&lt;any, any, any, any, any> ? InferCollectionType&lt;any[any]> : TSource[K] extends QueryBuilder&lt;TContext> ? ResultValue&lt;TContext> : never }[K] }>>

테이블 참조를 받아 조인 조건을 반환하는 함수입니다.

반환값

QueryBuilder&lt;MergeContextWithJoinType&lt;TContext, SchemaFromSource&lt;TSource>, "inner">>

내부 조인된 테이블을 사용할 수 있는 QueryBuilder입니다

예제

// Inner join users with posts
query
.from({ users: usersCollection })
.innerJoin({ posts: postsCollection }, ({users, posts}) => eq(users.id, posts.userId))

join()

join<TSource, TJoinType>(
source,
onCallback,
type): QueryBuilder<MergeContextWithJoinType<TContext, SchemaFromSource<TSource>, TJoinType>>;

정의 위치: packages/db/src/query/builder/index.ts:335

현재 쿼리에 다른 테이블 또는 서브쿼리를 조인합니다

타입 매개변수

TSource

TSource extends Source

TJoinType

TJoinType extends "inner" | "left" | "right" | "full" = "left"

매개변수

source

TSource

키가 테이블 별칭이고 값이 컬렉션 또는 서브쿼리인 단일 키-값 쌍을 가진 객체입니다

onCallback

JoinOnCallback&lt;MergeContextForJoinCallback&lt;TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl&lt;any, any, any, any, any> ? InferCollectionType&lt;any[any]> : TSource[K] extends CollectionOptionsIdentity&lt;any, any, any, any, any> ? InferCollectionType&lt;any[any]> : TSource[K] extends QueryBuilder&lt;TContext> ? ResultValue&lt;TContext> : never }[K] }>>

테이블 참조를 받아 조인 조건을 반환하는 함수입니다.

type

TJoinType = ...

조인 유형입니다. 'inner', 'left', 'right' 또는 'full'이며, 기본값은 'left'입니다

반환값

QueryBuilder&lt;MergeContextWithJoinType&lt;TContext, SchemaFromSource&lt;TSource>, TJoinType>>

조인된 테이블을 사용할 수 있는 QueryBuilder입니다

예제

// Left join users with posts
query
.from({ users: usersCollection })
.join({ posts: postsCollection }, ({users, posts}) => eq(users.id, posts.userId))

// Inner join with explicit type
query
.from({ u: usersCollection })
.join({ p: postsCollection }, ({u, p}) => eq(u.id, p.userId), 'inner')
// 서브쿼리와 조인
const activeUsers = query.from({ u: usersCollection }).where(({u}) => u.active)
query
.from({ activeUsers })
.join({ p: postsCollection }, ({u, p}) => eq(u.id, p.userId))

leftJoin()

leftJoin<TSource>(source, onCallback): QueryBuilder<MergeContextWithJoinType<TContext, SchemaFromSource<TSource>, "left">>;

정의 위치: packages/db/src/query/builder/index.ts:405

다른 테이블 또는 서브쿼리와 LEFT JOIN을 수행합니다

타입 매개변수

TSource

TSource extends Source

매개변수

source

TSource

키가 테이블 별칭이고 값이 컬렉션 또는 서브쿼리인 단일 키-값 쌍을 가진 객체입니다

onCallback

JoinOnCallback&lt;MergeContextForJoinCallback&lt;TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl&lt;any, any, any, any, any> ? InferCollectionType&lt;any[any]> : TSource[K] extends CollectionOptionsIdentity&lt;any, any, any, any, any> ? InferCollectionType&lt;any[any]> : TSource[K] extends QueryBuilder&lt;TContext> ? ResultValue&lt;TContext> : never }[K] }>>

테이블 참조를 받아 조인 조건을 반환하는 함수입니다.

반환값

QueryBuilder&lt;MergeContextWithJoinType&lt;TContext, SchemaFromSource&lt;TSource>, "left">>

왼쪽 조인된 테이블을 사용할 수 있는 QueryBuilder입니다

예제

// Left join users with posts
query
.from({ users: usersCollection })
.leftJoin({ posts: postsCollection }, ({users, posts}) => eq(users.id, posts.userId))

limit()

limit(count): QueryBuilder<TContext>;

정의 위치: packages/db/src/query/builder/index.ts:811

쿼리가 반환하는 행 수를 제한합니다 orderBylimit에 필요합니다

매개변수

count

number

반환할 최대 행 수입니다

반환값

QueryBuilder&lt;TContext>

제한이 적용된 QueryBuilder입니다

예제

// Get top 5 posts by likes
query
.from({ posts: postsCollection })
.orderBy(({posts}) => posts.likes, 'desc')
.limit(5)

offset()

offset(count): QueryBuilder<TContext>;

정의 위치: packages/db/src/query/builder/index.ts:835

결과를 반환하기 전에 지정된 수의 행을 건너뜁니다 orderByoffset에 필요합니다

매개변수

count

number

건너뛸 행 수입니다

반환값

QueryBuilder&lt;TContext>

오프셋이 적용된 QueryBuilder입니다

예제

// Get second page of results
query
.from({ posts: postsCollection })
.orderBy(({posts}) => posts.createdAt, 'desc')
.offset(page * pageSize)
.limit(pageSize)

orderBy()

orderBy(callback, options): QueryBuilder<TContext>;

정의 위치: packages/db/src/query/builder/index.ts:702

하나 이상의 열을 기준으로 쿼리 결과를 정렬합니다

매개변수

callback

OrderByCallback&lt;TContext>

테이블 참조를 받아 정렬할 필드를 반환하는 함수입니다

options

OrderByDirection | OrderByOptions

반환값

QueryBuilder&lt;TContext>

정렬이 적용된 QueryBuilder입니다

예제

// Sort by a single column
query
.from({ users: usersCollection })
.orderBy(({users}) => users.name)

// Sort descending
query
.from({ users: usersCollection })
.orderBy(({users}) => users.createdAt, 'desc')

// Multiple sorts (chain orderBy calls)
query
.from({ users: usersCollection })
.orderBy(({users}) => users.lastName)
.orderBy(({users}) => users.firstName)

rightJoin()

rightJoin<TSource>(source, onCallback): QueryBuilder<MergeContextWithJoinType<TContext, SchemaFromSource<TSource>, "right">>;

정의 위치: packages/db/src/query/builder/index.ts:431

다른 테이블 또는 서브쿼리와 RIGHT JOIN을 수행합니다

타입 매개변수

TSource

TSource extends Source

매개변수

source

TSource

키가 테이블 별칭이고 값이 컬렉션 또는 서브쿼리인 단일 키-값 쌍을 가진 객체입니다

onCallback

JoinOnCallback&lt;MergeContextForJoinCallback&lt;TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl&lt;any, any, any, any, any> ? InferCollectionType&lt;any[any]> : TSource[K] extends CollectionOptionsIdentity&lt;any, any, any, any, any> ? InferCollectionType&lt;any[any]> : TSource[K] extends QueryBuilder&lt;TContext> ? ResultValue&lt;TContext> : never }[K] }>>

테이블 참조를 받아 조인 조건을 반환하는 함수입니다.

반환값

QueryBuilder&lt;MergeContextWithJoinType&lt;TContext, SchemaFromSource&lt;TSource>, "right">>

오른쪽 조인된 테이블을 사용할 수 있는 QueryBuilder입니다

예제

// Right join users with posts
query
.from({ users: usersCollection })
.rightJoin({ posts: postsCollection }, ({users, posts}) => eq(users.id, posts.userId))

select()

호출 시그니처

select<TSelectObject>(callback): QueryBuilder<WithResult<TContext, ResultTypeFromSelect<TSelectObject>>>;

정의 위치: packages/db/src/query/builder/index.ts:643

쿼리에서 특정 열 또는 계산된 값을 선택합니다

타입 매개변수
TSelectObject

TSelectObject extends SelectShape

매개변수
callback

(refs) => NonScalarSelectObject&lt;TSelectObject>

테이블 참조를 받고 선택한 필드 또는 표현식이 포함된 객체를 반환하는 함수입니다

반환값

QueryBuilder&lt;WithResult&lt;TContext, ResultTypeFromSelect&lt;TSelectObject>>>

선택한 필드만 반환하는 QueryBuilder입니다

예제
// Select specific columns
query
.from({ users: usersCollection })
.select(({users}) => ({
name: users.name,
email: users.email
}))

// Select with computed values
query
.from({ users: usersCollection })
.select(({users}) => ({
fullName: concat(users.firstName, ' ', users.lastName),
ageInMonths: mul(users.age, 12)
}))

// Select with aggregates (requires GROUP BY)
query
.from({ posts: postsCollection })
.groupBy(({posts}) => posts.userId)
.select(({posts, count}) => ({
userId: posts.userId,
postCount: count(posts.id)
}))

호출 시그니처

select<TSelectValue>(callback): QueryBuilder<WithResult<TContext, ResultTypeFromSelectValue<TSelectValue>>>;

정의 위치: packages/db/src/query/builder/index.ts:648

쿼리에서 특정 열 또는 계산된 값을 선택합니다

타입 매개변수
TSelectValue

TSelectValue extends ScalarSelectValue

매개변수
callback

(refs) => TSelectValue

테이블 참조를 받고 선택한 필드 또는 표현식이 포함된 객체를 반환하는 함수입니다

반환값

QueryBuilder&lt;WithResult&lt;TContext, ResultTypeFromSelectValue&lt;TSelectValue>>>

선택한 필드만 반환하는 QueryBuilder입니다

예제
// Select specific columns
query
.from({ users: usersCollection })
.select(({users}) => ({
name: users.name,
email: users.email
}))

// Select with computed values
query
.from({ users: usersCollection })
.select(({users}) => ({
fullName: concat(users.firstName, ' ', users.lastName),
ageInMonths: mul(users.age, 12)
}))

// Select with aggregates (requires GROUP BY)
query
.from({ posts: postsCollection })
.groupBy(({posts}) => posts.userId)
.select(({posts, count}) => ({
userId: posts.userId,
postCount: count(posts.id)
}))

unionAll()

호출 시그니처

unionAll<TSource>(source): QueryBuilder<ContextFromUnionSource<TSource>>;

정의 위치: packages/db/src/query/builder/index.ts:274

하나의 쿼리에서 여러 독립적인 소스 스트림을 통합합니다.

타입 매개변수
TSource

TSource extends Source

매개변수
source

TSource

컬렉션 또는 서브쿼리에 매핑된 하나 이상의 별칭을 포함하는 객체입니다

반환값

QueryBuilder&lt;ContextFromUnionSource&lt;TSource>>

통합된 소스를 사용할 수 있는 QueryBuilder입니다

예제
query
.unionAll({ message: messagesCollection, toolCall: toolCallsCollection })
.orderBy(({ message, toolCall }) =>
coalesce(message.timestamp, toolCall.timestamp)
)

호출 시그니처

unionAll<TBranches>(...branches): QueryBuilder<ContextFromUnionBranches<TBranches>>;

정의 위치: packages/db/src/query/builder/index.ts:277

하나의 쿼리에서 여러 독립적인 소스 스트림을 통합합니다.

타입 매개변수
TBranches

TBranches extends readonly [QueryBuilder&lt;any>, QueryBuilder&lt;any>]

매개변수
branches

...TBranches

반환값

QueryBuilder&lt;ContextFromUnionBranches&lt;TBranches>>

통합된 소스를 사용할 수 있는 QueryBuilder입니다

예제
query
.unionAll({ message: messagesCollection, toolCall: toolCallsCollection })
.orderBy(({ message, toolCall }) =>
coalesce(message.timestamp, toolCall.timestamp)
)

where()

where(callback): QueryBuilder<TContext>;

정의 위치: packages/db/src/query/builder/index.ts:522

조건에 따라 행을 필터링합니다

매개변수

callback

WhereCallback&lt;TContext>

테이블 참조를 받고 표현식을 반환하는 함수입니다

반환값

QueryBuilder&lt;TContext>

where 조건이 적용된 QueryBuilder입니다

예제

// Simple condition
query
.from({ users: usersCollection })
.where(({users}) => gt(users.age, 18))

// Multiple conditions
query
.from({ users: usersCollection })
.where(({users}) => and(
gt(users.age, 18),
eq(users.active, true)
))

// Multiple where calls are ANDed together
query
.from({ users: usersCollection })
.where(({users}) => gt(users.age, 18))
.where(({users}) => eq(users.active, true))