Variable CursorTimeoutModeConst Experimental

CursorTimeoutMode: Readonly<{
    ITERATION: "iteration";
    LIFETIME: "cursorLifetime";
}> = ...

Specifies how timeoutMS is applied to the cursor. 指定如何将timeoutMS应用于游标。Can be either 'cursorLifeTime' or 'iteration' When set to 'iteration', the deadline specified by timeoutMS applies to each call of cursor.next(). 可以是'cursorLifeTime''iteration'。当设置为'iteration'时,timeoutMS指定的截止日期适用于每次调用cursor.next()When set to 'cursorLifetime', the deadline applies to the life of the entire cursor.当设置为'cursorLifetime'时,截止日期适用于整个游标的生命周期。

Depending on the type of cursor being used, this option has different default values. 根据所使用的游标类型,此选项具有不同的默认值。For non-tailable cursors, this value defaults to 'cursorLifetime' For tailable cursors, this value defaults to 'iteration' since tailable cursors, by definition can have an arbitrarily long lifetime.对于不可尾随的游标,此值默认为'cursorLifetime'。对于可尾随游标,此值默认为'iteration',因为根据定义,可尾随游标可以具有任意长的生存期。

const cursor = collection.find({}, {timeoutMS: 100, timeoutMode: 'iteration'});
for await (const doc of cursor) {
// process doc
// This will throw a timeout error if any of the iterator's `next()` calls takes more than 100ms, but
// will continue to iterate successfully otherwise, regardless of the number of batches.
}
const cursor = collection.find({}, { timeoutMS: 1000, timeoutMode: 'cursorLifetime' });
const docs = await cursor.toArray(); // This entire line will throw a timeout error if all batches are not fetched and returned within 1000ms.如果未在1000ms内提取并返回所有批,则整行将抛出超时错误。