Class FindCursor<TSchema>

Type Parameters

  • TSchema = any

Hierarchy

Properties

CLOSE: "close" = ...

Event

captureRejectionSymbol: typeof captureRejectionSymbol
captureRejections: boolean

Sets or gets the default captureRejection value for all emitters.

defaultMaxListeners: number
errorMonitor: typeof errorMonitor

This symbol shall be used to install a listener for only monitoring 'error' events. Listeners installed using this symbol are called before the regular 'error' listeners are called.

Installing a listener using this symbol does not change the behavior once an 'error' event is emitted, therefore the process will still crash if no regular 'error' listener is installed.

Accessors

Methods

  • Add a cursor flag to the cursor将游标标志添加到游标

    Parameters

    • flag: "tailable" | "oplogReplay" | "noCursorTimeout" | "awaitData" | "exhaust" | "partial"

      The flag to set, must be one of following ['tailable', 'oplogReplay', 'noCursorTimeout', 'awaitData', 'partial' -.要设置的标志必须是以下之一[“可用”、“oplogReplay”、“noCursorTimeout”、“awaitData”、“partial”-。

    • value: boolean

      The flag boolean value.标志布尔值。

    Returns FindCursor<TSchema>

  • Add a query modifier to the cursor query向游标查询添加查询修饰符

    Parameters

    • name: string

      The query modifier (must start with $, such as $orderby etc)查询修饰符(必须以$开头,如$orderby等)

    • value: string | number | boolean | Document

      The modifier value.修改器值。

    Returns FindCursor<TSchema>

  • Returns a new uninitialized copy of this cursor, with options matching those that have been set on the current instance返回此游标的新的未初始化副本,其选项与在当前实例上设置的选项相匹配

    Returns FindCursor<TSchema>

  • Set the collation options for the cursor.设置游标的排序规则选项。

    Parameters

    • value: CollationOptions

      The cursor collation options (MongoDB 3.4 or higher) settings for update operation (see 3.4 documentation for available fields).更新操作的游标排序选项(MongoDB 3.4或更高版本)设置(有关可用字段,请参阅3.4文档)。

    Returns FindCursor<TSchema>

  • Add a comment to the cursor query allowing for tracking the comment in the log.将注释添加到游标查询中,以便跟踪日志中的注释。

    Parameters

    • value: string

      The comment attached to this query.附加到此查询的注释。

    Returns FindCursor<TSchema>

  • Get the count of documents for this cursor获取此游标的文档数

    Parameters

    Returns Promise<number>

    Deprecated已弃用

    Use collection.estimatedDocumentCount or collection.countDocuments instead请改用collection.estimatedDocumentCountcollection.countDocuments

  • Iterates over all the documents for this cursor using the iterator, callback pattern.使用迭代器、回调模式对该游标的所有文档进行迭代。

    If the iterator returns false, iteration will stop.如果迭代器返回false,迭代将停止。

    Parameters

    • iterator: ((doc) => boolean | void)

      The iteration callback.迭代回调。

        • (doc): boolean | void
        • Parameters

          • doc: TSchema

          Returns boolean | void

    Returns Promise<void>

    Deprecated已弃用

    • Will be removed in a future release. Use for await...of instead.将在将来的版本中删除。请改用await...of
  • Set the cursor hint设置游标提示

    Parameters

    • hint: Hint

      If specified, then the query system will only consider plans using the hinted index.如果指定,则查询系统将只考虑使用提示索引的计划。

    Returns FindCursor<TSchema>

  • Map all documents using the provided function If there is a transform set on the cursor, that will be called first and the result passed to this function's transform.使用提供的函数映射所有文档如果游标上有一个转换集,将首先调用该转换集,并将结果传递给该函数的转换。

    Type Parameters

    • T

    Parameters

    • transform: ((doc) => T)

      The mapping transformation method.映射转换方法。

        • (doc): T
        • Parameters

          • doc: TSchema

          Returns T

    Returns FindCursor<T>

    Remarks

    Note Cursors use null internally to indicate that there are no more documents in the cursor. 游标在内部使用null表示游标中不再有文档。Providing a mapping function that maps values to null will result in the cursor closing itself before it has finished iterating all documents. 提供一个将值映射为null的映射函数将导致游标在迭代完所有文档之前关闭。 This will not result in a memory leak, just surprising behavior. For example:不会导致内存泄漏,只是令人惊讶的行为。例如:

    const cursor = collection.find({});
    cursor.map(() => null);

    const documents = await cursor.toArray();
    // documents is always [], regardless of how many documents are in the collection.documents始终为[],无论集合中有多少个文档。

    Other falsey values are allowed:允许其他伪值:

    const cursor = collection.find({});
    cursor.map(() => '');

    const documents = await cursor.toArray();
    // documents is now an array of empty strings文档现在是一个空字符串数组

    Note for Typescript Users: adding a transform changes the return type of the iteration of this cursor, it does not return a new instance of a cursor. 添加转换会更改此游标迭代的返回类型,它不会返回游标的新实例。This means when calling map, you should always assign the result to a new variable in order to get a correctly typed cursor variable. 这意味着在调用map时,应该始终将结果分配给一个新变量,以便获得正确类型的游标变量。Take note of the following example:请注意以下示例:

    Example

    const cursor: FindCursor<Document> = coll.find();
    const mappedCursor: FindCursor<number> = cursor.map(doc => Object.keys(doc).length);
    const keyCounts: number[] = await mappedCursor.toArray(); // cursor.toArray() still returns 依然返回Document[]
  • Set the cursor max设置游标最大值

    Parameters

    • max: Document

      Specify a $max value to specify the exclusive upper bound for a specific index in order to constrain the results of find(). 指定$max值以指定特定索引的排除上限,以便约束find()的结果。The $max specifies the upper bound for all keys of a specific index in order.$max按顺序指定特定索引的所有键的上限。

    Returns FindCursor<TSchema>

  • Set a maxAwaitTimeMS on a tailing cursor query to allow to customize the timeout value for the option awaitData (Only supported on MongoDB 3.2 or higher, ignored otherwise)在尾随游标查询上设置maxAwaitTimeMS,以允许自定义选项awaitData的超时值(仅在MongoDB 3.2或更高版本上支持,否则忽略)

    Parameters

    • value: number

      Number of milliseconds to wait before aborting the tailed query.中止尾部查询之前等待的毫秒数。

    Returns FindCursor<TSchema>

  • Set a maxTimeMS on the cursor query, allowing for hard timeout limits on queries (Only supported on MongoDB 2.6 or higher)在游标查询上设置maxTimeMS,允许对查询进行硬超时限制(仅在MongoDB 2.6或更高版本上支持)

    Parameters

    • value: number

      Number of milliseconds to wait before aborting the query.中止查询前等待的毫秒数。

    Returns FindCursor<TSchema>

  • Set the cursor min设置游标最小值

    Parameters

    • min: Document

      Specify a $min value to specify the inclusive lower bound for a specific index in order to constrain the results of find(). 指定$min值以指定特定索引的包含下界,以便约束find()的结果。The $min specifies the lower bound for all keys of a specific index in order.$min按顺序指定特定索引的所有键的下限。

    Returns FindCursor<TSchema>

  • Get the next available document from the cursor, returns null if no more documents are available.从游标中获取下一个可用文档,如果没有更多可用文档,则返回null

    Returns Promise<null | TSchema>

  • Add a project stage to the aggregation pipeline将项目阶段添加到聚合管道

    Type Parameters

    Parameters

    Returns FindCursor<T>

    Remarks

    In order to strictly type this function you must provide an interface that represents the effect of your projection on the result documents.为了严格键入此函数,您必须提供一个接口来表示投影对结果文档的影响。

    By default chaining a projection to your cursor changes the returned type to the generic Document type. 默认情况下,将投影链接到游标会将返回的类型更改为通用文档类型。You should specify a parameterized type to have assertions on your final results.您应该指定一个参数化类型,以便对最终结果进行断言。

    Example

    // Best way最佳方式
    const docs: FindCursor<{ a: number }> = cursor.project<{ a: number }>({ _id: 0, a: true });
    // Flexible way灵活的方式
    const docs: FindCursor<Document> = cursor.project({ _id: 0, a: true });

    Example

    const cursor: FindCursor<{ a: number; b: string }> = coll.find();
    const projectCursor = cursor.project<{ a: number }>({ _id: 0, a: true });
    const aPropOnlyArray: {a: number}[] = await projectCursor.toArray();

    // or always use chaining and save the final cursor或者始终使用链接并保存最终游标

    const cursor = coll.find().project<{ a: string }>({
    _id: 0,
    a: { $convert: { input: '$a', to: 'string' }
    }});
  • Set the cursor returnKey.设置游标returnKey。If set to true, modifies the cursor to only return the index field or fields for the results of the query, rather than documents.如果设置为true,则修改游标以仅返回查询结果的索引字段,而不是文档。 If set to true and the query does not use an index to perform the read operation, the returned documents will not contain any fields.如果设置为true,并且查询不使用索引执行读取操作,则返回的文档将不包含任何字段。

    Parameters

    • value: boolean

      the returnKey value.returnKey值。

    Returns FindCursor<TSchema>

  • Rewind this cursor to its uninitialized state. 将此游标回退到未初始化状态。Any options that are present on the cursor will remain in effect. Iterating this cursor will cause new queries to be sent to the server, even if the resultant data has already been retrieved by this cursor.游标上的任何选项都将保持有效。迭代该游标将导致向服务器发送新的查询,即使该游标已经检索到结果数据。

    Returns void

  • Modifies the output of a query by adding a field $recordId to matching documents. $recordId is the internal key which uniquely identifies a document in a collection.通过向匹配的文档添加字段$recordId来修改查询的输出$recordId是唯一标识集合中文档的内部键。

    Parameters

    • value: boolean

      The $showDiskLoc option has now been deprecated and replaced with the showRecordId field. $showDiskLoc will still be accepted for OP_QUERY stye find.$showDiskLoc选项现在已被弃用,取而代之的是showRecordId字段$showDiskLoc仍将被接受用于OP_QUERY类型查找。

    Returns FindCursor<TSchema>

  • Sets the sort order of the cursor query.设置游标查询的排序顺序。

    Parameters

    • sort: Sort

      The key or keys set for the sort.为排序设置的一个或多个键。

    • Optional direction: SortDirection

      The direction of the sorting (1 or -1).排序的方向(1或-1)。

    Returns FindCursor<TSchema>

  • Returns an array of documents. 返回一个文档数组。The caller is responsible for making sure that there is enough memory to store the results. Note that the array only contains partial results when this cursor had been previously accessed. 调用者负责确保有足够的内存来存储结果。请注意,当以前访问过该游标时,数组只包含部分结果。In that case, cursor.rewind() can be used to reset the cursor.在这种情况下,可以使用cursor.rewind()来重置游标。

    Returns Promise<TSchema[]>

  • Try to get the next available document from the cursor or null if an empty batch is returned尝试从游标获取下一个可用文档,如果返回空批,则为null

    Returns Promise<null | TSchema>

  • Returns a copy of the array of listeners for the event named eventName.返回名为eventName的事件的侦听器数组的副本。

    For EventEmitters this behaves exactly the same as calling .listeners on the emitter.对于EventEmitter,其行为与在发射器上调用.listeners完全相同。

    For EventTargets this is the only way to get the event listeners for the event target. 对于EventTarget,这是获取事件目标的事件侦听器的唯一方法。This is useful for debugging and diagnostic purposes.这对于调试和诊断非常有用。

    import { getEventListeners, EventEmitter } from 'node:events';

    {
    const ee = new EventEmitter();
    const listener = () => console.log('Events are fun');
    ee.on('foo', listener);
    console.log(getEventListeners(ee, 'foo')); // [ [Function: listener] ]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    console.log(getEventListeners(et, 'foo')); // [ [Function: listener] ]
    }

    Parameters

    • emitter: EventEmitter | _DOMEventTarget
    • name: string | symbol

    Returns Function[]

    Since

    v15.2.0, v14.17.0

  • A class method that returns the number of listeners for the given eventNameregistered on the given emitter.一个类方法,用于返回在给定emitter上注册的给定eventName的侦听器数。

    import { EventEmitter, listenerCount } from 'node:events';

    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2

    Parameters

    • emitter: EventEmitter

      The emitter to query要查询的发射器

    • eventName: string | symbol

      The event name

    Returns number

    Since

    v0.9.12

    Deprecated已弃用

    Since v3.2.0 - Use listenerCount instead.

  • import { on, EventEmitter } from 'node:events';
    import process from 'node:process';

    const ee = new EventEmitter();

    // Emit later on稍后发射
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it processes one event at a time (even with await). 这个内部块的执行是同步的,它一次处理一个事件(即使有等待)。
    // Do not use if concurrent execution is required.如果需要并发执行,请不要使用。
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here

    Returns an AsyncIterator that iterates eventName events. It will throw if the EventEmitter emits 'error'. 返回一个迭代eventName事件的AsyncIterator。如果EventEmitter发出“error”,它将抛出。It removes all listeners when exiting the loop. 它在退出循环时删除所有侦听器。The value returned by each iteration is an array composed of the emitted event arguments.每次迭代返回的value是一个由发出的事件参数组成的数组。

    An AbortSignal can be used to cancel waiting on events:AbortSignal可用于取消等待事件:

    import { on, EventEmitter } from 'node:events';
    import process from 'node:process';

    const ac = new AbortController();

    (async () => {
    const ee = new EventEmitter();

    // Emit later on稍后发射
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it processes one event at a time (even with await). 这个内部块的执行是同步的,它一次处理一个事件(即使有等待)。
    // Do not use if concurrent execution is required.如果需要并发执行,请不要使用。
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    process.nextTick(() => ac.abort());

    Parameters

    • emitter: EventEmitter
    • eventName: string

      The name of the event being listened for正在侦听的事件的名称

    • Optional options: StaticEventEmitterOptions

    Returns AsyncIterableIterator<any>

    that iterates eventName events emitted by the emitter迭代emitter发出的eventName事件

    Since

    v13.6.0, v12.16.0

  • Creates a Promise that is fulfilled when the EventEmitter emits the given event or that is rejected if the EventEmitter emits 'error' while waiting. The Promise will resolve with an array of all the arguments emitted to the given event.创建一个Promise,该Promise在EventEmitter发出给定事件时实现,或者如果EventEmitter在等待时发出“error”则被拒绝。Promise将使用向给定事件发出的所有参数的数组进行解析。

    This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event semantics and does not listen to the 'error' event.此方法是有意通用的,可与web平台EventTarget接口配合使用,该接口没有特殊的'error'事件语义,也不侦听'error'消息。

    import { once, EventEmitter } from 'node:events';
    import process from 'node:process';

    const ee = new EventEmitter();

    process.nextTick(() => {
    ee.emit('myevent', 42);
    });

    const [value] = await once(ee, 'myevent');
    console.log(value);

    const err = new Error('kaboom');
    process.nextTick(() => {
    ee.emit('error', err);
    });

    try {
    await once(ee, 'myevent');
    } catch (err) {
    console.error('error happened', err);
    }

    The special handling of the 'error' event is only used when events.once()is used to wait for another event. 'error'事件的特殊处理仅在events.once()用于等待另一个事件时使用。If events.once() is used to wait for the 'error' event itself, then it is treated as any other kind of event without special handling:如果events.once()用于等待'error'事件本身,那么它将被视为任何其他类型的事件,而无需特殊处理:

    import { EventEmitter, once } from 'node:events';

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.error('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom

    An AbortSignal can be used to cancel waiting for the event:AbortSignal可用于取消等待事件:

    import { EventEmitter, once } from 'node:events';

    const ee = new EventEmitter();
    const ac = new AbortController();

    async function foo(emitter, event, signal) {
    try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
    } catch (error) {
    if (error.name === 'AbortError') {
    console.error('Waiting for the event was canceled!');
    } else {
    console.error('There was an error', error.message);
    }
    }
    }

    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event中止等待事件
    ee.emit('foo'); // Prints: Waiting for the event was canceled!打印:等待活动已取消!

    Parameters

    • emitter: _NodeEventTarget
    • eventName: string | symbol
    • Optional options: StaticEventEmitterOptions

    Returns Promise<any[]>

    Since

    v11.13.0, v10.16.0

  • Parameters

    • emitter: _DOMEventTarget
    • eventName: string
    • Optional options: StaticEventEmitterOptions

    Returns Promise<any[]>

  • import { setMaxListeners, EventEmitter } from 'node:events';

    const target = new EventTarget();
    const emitter = new EventEmitter();

    setMaxListeners(5, target, emitter);

    Parameters

    • Optional n: number

      A non-negative number. The maximum number of listeners per EventTarget event.一个非负数。每个EventTarget事件的最大侦听器数。

    • Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]

    Returns void

    Since

    v15.4.0

Generated using TypeDoc