mongodb-aggregation-dts
Version:
Type definitions for MongoDB aggregation pipelines and operators
64 lines (63 loc) • 2.39 kB
TypeScript
import { Binary } from "mongodb";
import type { AnyArray, Unpacked } from "./common";
type QuerySelector<T> = {
$eq?: T;
$gt?: T;
$gte?: T;
$in?: [T] extends AnyArray<any> ? Unpacked<T>[] : T[];
$lt?: T;
$lte?: T;
$ne?: T;
$nin?: [T] extends AnyArray<any> ? Unpacked<T>[] : T[];
$not?: T extends string ? QuerySelector<T> | RegExp : QuerySelector<T>;
/**
* When `true`, `$exists` matches the documents that contain the field,
* including documents where the field value is null.
*/
$exists?: boolean;
$type?: string | number;
$expr?: any;
$jsonSchema?: any;
$mod?: T extends number ? [number, number] : never;
$regex?: T extends string ? RegExp | string : never;
$options?: T extends string ? string : never;
$geoIntersects?: {
$geometry: object;
};
$geoWithin?: object;
$near?: object;
$nearSphere?: object;
$maxDistance?: number;
$all?: T extends AnyArray<any> ? any[] : never;
$elemMatch?: T extends AnyArray<any> ? object : never;
$size?: T extends AnyArray<any> ? number : never;
$bitsAllClear?: number | Binary | number[];
$bitsAllSet?: number | Binary | number[];
$bitsAnyClear?: number | Binary | number[];
$bitsAnySet?: number | Binary | number[];
};
export type Condition<T> = T | QuerySelector<T | any> | any;
export type FilterQuery<T> = {
[P in keyof T]?: Condition<T[P]>;
} & RootQuerySelector<T>;
export type RootQuerySelector<T> = {
/** @see https://www.mongodb.com/docs/manual/reference/operator/query/and/#op._S_and */
$and?: Array<FilterQuery<T>>;
/** @see https://www.mongodb.com/docs/manual/reference/operator/query/nor/#op._S_nor */
$nor?: Array<FilterQuery<T>>;
/** @see https://www.mongodb.com/docs/manual/reference/operator/query/or/#op._S_or */
$or?: Array<FilterQuery<T>>;
/** @see https://www.mongodb.com/docs/manual/reference/operator/query/text */
$text?: {
$search: string;
$language?: string;
$caseSensitive?: boolean;
$diacriticSensitive?: boolean;
};
/** @see https://www.mongodb.com/docs/manual/reference/operator/query/where/#op._S_where */
$where?: string | Function;
/** @see https://www.mongodb.com/docs/manual/reference/operator/query/comment/#op._S_comment */
$comment?: string;
[key: string]: any;
};
export {};