@azure/cosmos
Version:
Microsoft Azure Cosmos DB Service Node.js SDK for NOSQL API
128 lines • 6.86 kB
TypeScript
import type { PartitionKey } from "../documents/index.js";
import type { SharedOptions } from "./SharedOptions.js";
/**
* The feed options and query methods.
*/
export interface FeedOptions extends SharedOptions {
/** Opaque token for continuing the enumeration. Default: undefined
* @deprecated Use continuationToken instead.
*/
continuation?: string;
/** Opaque token for continuing the enumeration. Default: undefined */
continuationToken?: string;
/**
* Limits the size of the continuation token in the response. Default: undefined
*
* Continuation Tokens contain optional data that can be removed from the serialization before writing it out to a header.
* By default we are capping this to 1kb to avoid long headers (Node.js has a global header size limit).
* A user may set this field to allow for longer headers, which can help the backend optimize query execution."
*/
continuationTokenLimitInKB?: number;
/**
* Allow scan on the queries which couldn't be served as indexing was opted out on the requested paths. Default: false
*
* In general, it is best to avoid using this setting. Scans are relatively expensive and take a long time to serve.
*/
enableScanInQuery?: boolean;
/**
* The maximum number of concurrent operations that run client side during parallel query execution in the
* Azure Cosmos DB database service. Negative values make the system automatically decides the number of
* concurrent operations to run. Default: 0 (no parallelism)
*/
maxDegreeOfParallelism?: number;
/**
* Max number of items to be returned in the enumeration operation. Default: undefined (server will defined payload)
*
* Expirimenting with this value can usually result in the biggest performance changes to the query.
*
* The smaller the item count, the faster the first result will be delivered (for non-aggregates). For larger amounts,
* it will take longer to serve the request, but you'll usually get better throughput for large queries (i.e. if you need 1000 items
* before you can do any other actions, set `maxItemCount` to 1000. If you can start doing work after the first 100, set `maxItemCount` to 100.)
*/
maxItemCount?: number;
/**
* Note: consider using changeFeed instead.
*
* Indicates a change feed request. Must be set to "Incremental feed", or omitted otherwise. Default: false
*/
useIncrementalFeed?: boolean;
/** Conditions Associated with the request. */
accessCondition?: {
/** Conditional HTTP method header type (IfMatch or IfNoneMatch). */
type: string;
/** Conditional HTTP method header value (the _etag field from the last version you read). */
condition: string;
};
/**
* Enable returning query metrics in response headers. Default: false
*
* Used for debugging slow or expensive queries. Also increases response size and if you're using a low max header size in Node.js,
* you can run into issues faster.
*/
populateQueryMetrics?: boolean;
/**
* Enable buffering additional items during queries. Default: false
*
* This will buffer an additional page at a time (multiplied by maxDegreeOfParallelism) from the server in the background.
* This improves latency by fetching pages before they are needed by the client. If you're draining all of the results from the
* server, like `.fetchAll`, you should usually enable this. If you're only fetching one page at a time via continuation token,
* you should avoid this. If you're draining more than one page, but not the entire result set, it may help improve latency, but
* it will increase the total amount of RU/s use to serve the entire query (as some pages will be fetched more than once).
*/
bufferItems?: boolean;
/**
* This setting forces the query to use a query plan. Default: false
*
* Note: this will disable continuation token support, even for single partition queries.
*
* For queries like aggregates and most cross partition queries, this happens anyway.
* However, since the library doesn't know what type of query it is until we get back the first response,
* some optimization can't happen until later.
*
* If this setting is enabled, it will force query plan for the query, which will save some network requests
* and ensure parallelism can happen. Useful for when you know you're doing cross-partition or aggregate queries.
*/
forceQueryPlan?: boolean;
/** Limits the query to a specific partition key. Default: undefined
*
* Scoping a query to a single partition can be accomplished two ways:
*
* `container.items.query('SELECT * from c', { partitionKey: "foo" }).toArray()`
* `container.items.query('SELECT * from c WHERE c.yourPartitionKey = "foo"').toArray()`
*
* The former is useful when the query body is out of your control
* but you still want to restrict it to a single partition. Example: an end user specified query.
*/
partitionKey?: PartitionKey;
/**
* Enable returning index metrics in response headers. Default: false
*/
populateIndexMetrics?: boolean;
/**
* Specifies a custom maximum buffer size for storing final results for nonStreamingOrderBy queries.
* This value is ignored if the query includes top/offset+limit clauses.
*/
vectorSearchBufferSize?: number;
/**
* Disable the nonStreamingOrderBy query feature in supported query features.
* Default: false. Set to true to avoid error from an old gateway that doesn't support this feature.
*/
disableNonStreamingOrderByQuery?: boolean;
/**
* Valid only for non streaming order by query.
* Default: false; When set to true, it allows queries to bypass the default behavior that blocks nonStreaming queries without top or limit clauses.
*/
allowUnboundedNonStreamingQueries?: boolean;
/**
* Controls query execution behavior.
* Default: false. If set to false, the query will retry until results are ready and `maxItemCount` is reached, which can take time for large partitions with relatively small data.
* If set to true, scans partitions up to `maxDegreeOfParallelism`, adds results to the buffer, and returns what is available. If results are not ready, it returns an empty response.
*/
enableQueryControl?: boolean;
/**
* Default: false. If set to true, it disables the hybrid search query plan optimization.
* This optimization is enabled by default and is used to improve the performance of hybrid search queries.
*/
disableHybridSearchQueryPlanOptimization?: boolean;
}
//# sourceMappingURL=FeedOptions.d.ts.map