From 01afc5a1cb2fe1a5fcde1bd10ae7657c44921899 Mon Sep 17 00:00:00 2001 From: nbbeeken <10873993+nbbeeken@users.noreply.github.com> Date: Wed, 23 Apr 2025 18:36:50 +0000 Subject: [PATCH 1/2] [create-pull-request] automated change --- docs/Next/assets/navigation.js | 2 +- docs/Next/assets/search.js | 2 +- docs/Next/classes/Batch.html | 4 +- docs/Next/classes/BulkOperationBase.html | 10 +- docs/Next/classes/BulkWriteResult.html | 32 ++--- docs/Next/classes/ChangeStream.html | 28 ++-- docs/Next/classes/Collection.html | 98 +++++++------- docs/Next/classes/FindOperators.html | 22 +-- docs/Next/classes/MongoAPIError.html | 10 +- docs/Next/classes/MongoAWSError.html | 10 +- docs/Next/classes/MongoAzureError.html | 10 +- .../classes/MongoBatchReExecutionError.html | 10 +- docs/Next/classes/MongoBulkWriteError.html | 26 ++-- docs/Next/classes/MongoChangeStreamError.html | 10 +- docs/Next/classes/MongoClient.html | 26 ++-- .../MongoClientBulkWriteCursorError.html | 10 +- .../classes/MongoClientBulkWriteError.html | 18 +-- .../MongoClientBulkWriteExecutionError.html | 10 +- .../Next/classes/MongoCompatibilityError.html | 10 +- .../MongoCryptAzureKMSRequestError.html | 8 +- .../classes/MongoCryptCreateDataKeyError.html | 8 +- ...goCryptCreateEncryptedCollectionError.html | 8 +- docs/Next/classes/MongoCryptError.html | 8 +- .../MongoCryptInvalidArgumentError.html | 8 +- ...ngoCryptKMSRequestNetworkTimeoutError.html | 8 +- .../classes/MongoCursorExhaustedError.html | 10 +- docs/Next/classes/MongoCursorInUseError.html | 10 +- .../Next/classes/MongoDecompressionError.html | 10 +- docs/Next/classes/MongoDriverError.html | 10 +- docs/Next/classes/MongoError.html | 10 +- .../classes/MongoExpiredSessionError.html | 10 +- docs/Next/classes/MongoGCPError.html | 10 +- docs/Next/classes/MongoGridFSChunkError.html | 10 +- docs/Next/classes/MongoGridFSStreamError.html | 10 +- .../classes/MongoInvalidArgumentError.html | 10 +- docs/Next/classes/MongoKerberosError.html | 10 +- .../classes/MongoMissingCredentialsError.html | 10 +- .../classes/MongoMissingDependencyError.html | 12 +- docs/Next/classes/MongoNetworkError.html | 10 +- .../classes/MongoNetworkTimeoutError.html | 10 +- docs/Next/classes/MongoNotConnectedError.html | 10 +- docs/Next/classes/MongoOIDCError.html | 10 +- .../classes/MongoOperationTimeoutError.html | 10 +- docs/Next/classes/MongoParseError.html | 10 +- docs/Next/classes/MongoRuntimeError.html | 10 +- docs/Next/classes/MongoServerClosedError.html | 10 +- docs/Next/classes/MongoServerError.html | 12 +- .../classes/MongoServerSelectionError.html | 12 +- docs/Next/classes/MongoStalePrimaryError.html | 10 +- docs/Next/classes/MongoSystemError.html | 12 +- .../classes/MongoTailableCursorError.html | 10 +- .../classes/MongoTopologyClosedError.html | 10 +- docs/Next/classes/MongoTransactionError.html | 10 +- .../MongoUnexpectedServerResponseError.html | 10 +- docs/Next/classes/MongoWriteConcernError.html | 14 +- docs/Next/classes/OrderedBulkOperation.html | 8 +- docs/Next/classes/UnorderedBulkOperation.html | 8 +- docs/Next/classes/WriteConcernError.html | 10 +- docs/Next/classes/WriteError.html | 14 +- docs/Next/index.html | 1 + .../interfaces/BulkWriteOperationError.html | 4 +- docs/Next/interfaces/BulkWriteOptions.html | 10 +- .../Next/interfaces/ClientBulkWriteError.html | 4 +- .../interfaces/ClientBulkWriteOptions.html | 10 +- .../interfaces/ClientBulkWriteResult.html | 20 +-- .../interfaces/ClientDeleteManyModel.html | 10 +- .../Next/interfaces/ClientDeleteOneModel.html | 10 +- docs/Next/interfaces/ClientDeleteResult.html | 4 +- .../Next/interfaces/ClientInsertOneModel.html | 6 +- .../interfaces/ClientInsertOneResult.html | 4 +- .../interfaces/ClientReplaceOneModel.html | 16 ++- .../interfaces/ClientUpdateManyModel.html | 16 +-- .../Next/interfaces/ClientUpdateOneModel.html | 18 +-- docs/Next/interfaces/ClientUpdateResult.html | 10 +- docs/Next/interfaces/ClientWriteModel.html | 4 +- docs/Next/interfaces/CollectionOptions.html | 8 +- docs/Next/interfaces/ConnectionOptions.html | 22 +-- .../interfaces/ConnectionPoolOptions.html | 26 ++-- .../interfaces/CountDocumentsOptions.html | 6 +- docs/Next/interfaces/DeleteManyModel.html | 8 +- docs/Next/interfaces/DeleteOneModel.html | 8 +- docs/Next/interfaces/ErrorDescription.html | 4 +- docs/Next/interfaces/InsertOneModel.html | 4 +- docs/Next/interfaces/ModifyResult.html | 4 +- docs/Next/interfaces/MongoClientOptions.html | 126 +++++++++--------- .../interfaces/MongoNetworkErrorOptions.html | 4 +- docs/Next/interfaces/MongoOptions.html | 76 ++++++----- docs/Next/interfaces/MonitorOptions.html | 22 +-- docs/Next/interfaces/ProxyOptions.html | 4 +- docs/Next/interfaces/ReplaceOneModel.html | 14 +- docs/Next/interfaces/ReplaceOptions.html | 18 +-- docs/Next/interfaces/UpdateDescription.html | 6 +- docs/Next/interfaces/UpdateManyModel.html | 14 +- docs/Next/interfaces/UpdateOneModel.html | 16 ++- docs/Next/interfaces/UpdateOptions.html | 14 +- docs/Next/interfaces/UpdateResult.html | 12 +- docs/Next/interfaces/UpdateStatement.html | 18 +-- .../interfaces/WriteConcernErrorData.html | 4 +- .../interfaces/WriteConcernErrorResult.html | 4 +- docs/Next/modules.html | 2 + docs/Next/types/AnyBulkWriteOperation.html | 2 +- docs/Next/types/AnyClientBulkWriteModel.html | 2 +- docs/Next/types/BatchType.html | 2 +- docs/Next/types/ChangeStreamEvents.html | 4 +- docs/Next/types/ClientBulkWriteModel.html | 2 +- docs/Next/types/ConnectionEvents.html | 2 +- docs/Next/types/DistinctOptions.html | 8 +- docs/Next/types/MongoClientEvents.html | 2 +- docs/Next/types/MongoErrorLabel.html | 2 +- docs/Next/types/Sort.html | 2 +- docs/Next/types/SortDirectionForCmd.html | 1 + docs/Next/types/SortForCmd.html | 1 + .../types/SupportedNodeConnectionOptions.html | 2 +- docs/Next/types/SupportedSocketOptions.html | 2 +- docs/Next/types/WithSessionCallback.html | 2 +- docs/Next/variables/BatchType-1.html | 2 +- .../variables/LEGAL_TCP_SOCKET_OPTIONS.html | 2 +- docs/Next/variables/MongoErrorLabel-1.html | 2 +- docs/categories/index.xml | 2 +- docs/index.html | 2 +- docs/index.xml | 2 +- docs/tags/index.xml | 2 +- 122 files changed, 712 insertions(+), 677 deletions(-) create mode 100644 docs/Next/types/SortDirectionForCmd.html create mode 100644 docs/Next/types/SortForCmd.html diff --git a/docs/Next/assets/navigation.js b/docs/Next/assets/navigation.js index e318a8f6e3c..2729069099f 100644 --- a/docs/Next/assets/navigation.js +++ b/docs/Next/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,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" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,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" \ No newline at end of file diff --git a/docs/Next/assets/search.js b/docs/Next/assets/search.js index 80c8928dbc3..83d29490cdf 100644 --- a/docs/Next/assets/search.js +++ b/docs/Next/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/Next/classes/Batch.html b/docs/Next/classes/Batch.html index b18dcb33e66..849c0e10acd 100644 --- a/docs/Next/classes/Batch.html +++ b/docs/Next/classes/Batch.html @@ -1,6 +1,6 @@ Batch | mongodb

Class Batch<T>

Keeps the state of a unordered batch so we can rewrite the results correctly after command execution

-

Type Parameters

Constructors

Type Parameters

Constructors

Properties

batchType: BatchType
currentIndex: number
operations: T[]
originalIndexes: number[]
originalZeroIndex: number
size: number
sizeBytes: number
+

Constructors

Properties

batchType: BatchType
currentIndex: number
operations: T[]
originalIndexes: number[]
originalZeroIndex: number
size: number
sizeBytes: number
diff --git a/docs/Next/classes/BulkOperationBase.html b/docs/Next/classes/BulkOperationBase.html index bd987a558b7..756ab5ec4c5 100644 --- a/docs/Next/classes/BulkOperationBase.html +++ b/docs/Next/classes/BulkOperationBase.html @@ -1,4 +1,4 @@ -BulkOperationBase | mongodb

Class BulkOperationBaseAbstract

Hierarchy (view full)

Properties

isOrdered +BulkOperationBase | mongodb

Class BulkOperationBaseAbstract

Hierarchy (view full)

Properties

Accessors

batches bsonOptions @@ -9,14 +9,14 @@ find insert raw -

Properties

isOrdered: boolean
operationId?: number

Accessors

Methods

  • Builds a find operation for an update/updateOne/delete/deleteOne/replaceOne. +

Properties

isOrdered: boolean
operationId?: number

Accessors

Methods

  • Builds a find operation for an update/updateOne/delete/deleteOne/replaceOne. Returns a builder object used to complete the definition of the operation.

    Parameters

    Returns FindOperators

    const bulkOp = collection.initializeOrderedBulkOp();

    // Add an updateOne to the bulkOp
    bulkOp.find({ a: 1 }).updateOne({ $set: { b: 2 } });

    // Add an updateMany to the bulkOp
    bulkOp.find({ c: 3 }).update({ $set: { d: 4 } });

    // Add an upsert
    bulkOp.find({ e: 5 }).upsert().updateOne({ $set: { f: 6 } });

    // Add a deletion
    bulkOp.find({ g: 7 }).deleteOne();

    // Add a multi deletion
    bulkOp.find({ h: 8 }).delete();

    // Add a replaceOne
    bulkOp.find({ i: 9 }).replaceOne({writeConcern: { j: 10 }});

    // Update using a pipeline (requires Mongodb 4.2 or higher)
    bulk.find({ k: 11, y: { $exists: true }, z: { $exists: true } }).updateOne([
    { $set: { total: { $sum: [ '$y', '$z' ] } } }
    ]);

    // All of the ops will now be executed
    await bulkOp.execute();
    -
  • Add a single insert document to the bulk operation

    Parameters

    Returns BulkOperationBase

    const bulkOp = collection.initializeOrderedBulkOp();

    // Adds three inserts to the bulkOp.
    bulkOp
    .insert({ a: 1 })
    .insert({ b: 2 })
    .insert({ c: 3 });
    await bulkOp.execute();
    -
+
diff --git a/docs/Next/classes/BulkWriteResult.html b/docs/Next/classes/BulkWriteResult.html index 1d25108bd1c..9668d93f1b0 100644 --- a/docs/Next/classes/BulkWriteResult.html +++ b/docs/Next/classes/BulkWriteResult.html @@ -1,5 +1,5 @@ BulkWriteResult | mongodb

Class BulkWriteResult

The result of a bulk write.

-

Properties

Properties

deletedCount: number

Number of documents deleted.

-
insertedCount: number

Number of documents inserted.

-
insertedIds: {
    [key: number]: any;
}

Inserted document generated Id's, hash key is the index of the originating operation

-
matchedCount: number

Number of documents matched for update.

-
modifiedCount: number

Number of documents modified.

-
upsertedCount: number

Number of documents upserted.

-
upsertedIds: {
    [key: number]: any;
}

Upserted document generated Id's, hash key is the index of the originating operation

-

Accessors

  • get ok(): number
  • Evaluates to true if the bulk operation correctly executes

    -

    Returns number

Methods

  • Returns the number of write errors off the bulk operation

    -

    Returns number

  • Returns true if the bulk operation contains a write error

    -

    Returns boolean

+
insertedCount: number

Number of documents inserted.

+
insertedIds: {
    [key: number]: any;
}

Inserted document generated Id's, hash key is the index of the originating operation

+
matchedCount: number

Number of documents matched for update.

+
modifiedCount: number

Number of documents modified.

+
upsertedCount: number

Number of documents upserted.

+
upsertedIds: {
    [key: number]: any;
}

Upserted document generated Id's, hash key is the index of the originating operation

+

Accessors

  • get ok(): number
  • Evaluates to true if the bulk operation correctly executes

    +

    Returns number

Methods

  • Returns the number of write errors off the bulk operation

    +

    Returns number

  • Returns true if the bulk operation contains a write error

    +

    Returns boolean

diff --git a/docs/Next/classes/ChangeStream.html b/docs/Next/classes/ChangeStream.html index 81295485edf..826ab42f126 100644 --- a/docs/Next/classes/ChangeStream.html +++ b/docs/Next/classes/ChangeStream.html @@ -1,5 +1,5 @@ ChangeStream | mongodb

Class ChangeStream<TSchema, TChange>

Creates a new Change Stream instance. Normally created using Collection.watch().

-

Type Parameters

Hierarchy (view full)

Implements

Properties

Type Parameters

Hierarchy (view full)

Implements

Properties

[asyncDispose]: (() => Promise<void>)

An alias for ChangeStream.close|ChangeStream.close().

-
namespace: MongoDBNamespace
options: ChangeStreamOptions & {
    writeConcern?: undefined;
}

WriteConcern can still be present on the options because +

namespace: MongoDBNamespace
options: ChangeStreamOptions & {
    writeConcern?: undefined;
}

WriteConcern can still be present on the options because we inherit options from the client/db/collection. The key must be present on the options in order to delete it. This allows typescript to delete the key but will not allow a writeConcern to be assigned as a property on options.

-
pipeline: Document[]
streamOptions?: CursorStreamOptions
type: symbol
captureRejections: boolean

Value: boolean

+
pipeline: Document[]
streamOptions?: CursorStreamOptions
type: symbol
captureRejections: boolean

Value: boolean

Change the default captureRejections option on all new EventEmitter objects.

v13.4.0, v12.16.0

captureRejectionSymbol: typeof captureRejectionSymbol

Value: Symbol.for('nodejs.rejection')

@@ -64,7 +64,7 @@
CHANGE: "change" = CHANGE

Fired for each new matching change in the specified namespace. Attaching a change event listener to a Change Stream will switch the stream into flowing mode. Data will then be passed as soon as it is available.

-
CLOSE: "close" = CLOSE
defaultMaxListeners: number

By default, a maximum of 10 listeners can be registered for any single +

CLOSE: "close" = CLOSE
defaultMaxListeners: number

By default, a maximum of 10 listeners can be registered for any single event. This limit can be changed for individual EventEmitter instances using the emitter.setMaxListeners(n) method. To change the default for allEventEmitter instances, the events.defaultMaxListeners property @@ -89,21 +89,21 @@ listeners, respectively. Its name property is set to 'MaxListenersExceededWarning'.

v0.11.2

-
END: "end" = END
ERROR: "error" = ERROR
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.

+
END: "end" = END
ERROR: "error" = ERROR
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.

v13.6.0, v12.17.0

-
INIT: "init" = INIT
MORE: "more" = MORE
RESPONSE: "response" = RESPONSE
RESUME_TOKEN_CHANGED: "resumeTokenChanged" = RESUME_TOKEN_CHANGED

Emitted each time the change stream stores a new resume token.

-

Accessors

  • get resumeToken(): unknown
  • The cached resume token that is used to resume after the most recently returned change.

    -

    Returns unknown

Methods

  • Type Parameters

    • K

    Parameters

    • error: Error
    • event: string | symbol
    • Rest...args: AnyRest

    Returns void

INIT: "init" = INIT
MORE: "more" = MORE
RESPONSE: "response" = RESPONSE
RESUME_TOKEN_CHANGED: "resumeTokenChanged" = RESUME_TOKEN_CHANGED

Emitted each time the change stream stores a new resume token.

+

Accessors

  • get resumeToken(): unknown
  • The cached resume token that is used to resume after the most recently returned change.

    +

    Returns unknown

Methods

  • Type Parameters

    • K

    Parameters

    • error: Error
    • event: string | symbol
    • Rest...args: AnyRest

    Returns void

  • Frees the internal resources used by the change stream.

    -

    Returns Promise<void>

  • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +

    Returns Promise<void>

  • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments to each.

    Returns true if the event had listeners, false otherwise.

    import { EventEmitter } from 'node:events';
    const myEmitter = new EventEmitter();

    // First listener
    myEmitter.on('event', function firstListener() {
    console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
    console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
    const parameters = args.join(', ');
    console.log(`event with parameters ${parameters} in third listener`);
    });

    console.log(myEmitter.listeners('event'));

    myEmitter.emit('event', 1, 2, 3, 4, 5);

    // Prints:
    // [
    // [Function: firstListener],
    // [Function: secondListener],
    // [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener @@ -120,7 +120,7 @@ set by emitter.setMaxListeners(n) or defaults to EventEmitter.defaultMaxListeners.

    Returns number

    v1.0.0

  • Check if there is any document still available in the Change Stream

    -

    Returns Promise<boolean>

  • Returns the number of listeners listening for the event named eventName. +

    Returns Promise<boolean>

  • Try to get the next available document from the Change Stream's cursor or null if an empty batch is returned

    -

    Returns Promise<null | TChange>

  • Experimental

    Listens once to the abort event on the provided signal.

    +
  • Try to get the next available document from the Change Stream's cursor or null if an empty batch is returned

    +

    Returns Promise<null | TChange>

  • Experimental

    Listens once to the abort event on the provided signal.

    Listening to the abort event on abort signals is unsafe and may lead to resource leaks since another third party with the signal can call e.stopImmediatePropagation(). Unfortunately Node.js cannot change diff --git a/docs/Next/classes/Collection.html b/docs/Next/classes/Collection.html index eed29d3a701..92831164bc5 100644 --- a/docs/Next/classes/Collection.html +++ b/docs/Next/classes/Collection.html @@ -4,7 +4,7 @@

    import { MongoClient } from 'mongodb';

    interface Pet {
    name: string;
    kind: 'dog' | 'cat' | 'fish';
    }

    const client = new MongoClient('mongodb://localhost:27017');
    const pets = client.db().collection<Pet>('pets');

    const petCursor = pets.find();

    for await (const pet of petCursor) {
    console.log(`${pet.name} is a ${pet.kind}!`);
    }
    -

Type Parameters

Accessors

Type Parameters

Accessors

  • get dbName(): string
  • The name of the database this collection belongs to

    -

    Returns string

  • get namespace(): string
  • The namespace of this collection, in the format ${this.dbName}.${this.collectionName}

    -

    Returns string

  • get readConcern(): undefined | ReadConcern
  • The current readConcern of the collection. If not explicitly defined for +

Accessors

  • get dbName(): string
  • The name of the database this collection belongs to

    +

    Returns string

  • get namespace(): string
  • The namespace of this collection, in the format ${this.dbName}.${this.collectionName}

    +

    Returns string

  • get readConcern(): undefined | ReadConcern
  • The current readConcern of the collection. If not explicitly defined for this collection, will be inherited from the parent DB

    -

    Returns undefined | ReadConcern

  • get readPreference(): undefined | ReadPreference
  • The current readPreference of the collection. If not explicitly defined for this collection, will be inherited from the parent DB

    -

    Returns undefined | ReadPreference

  • get writeConcern(): undefined | WriteConcern
  • The current writeConcern of the collection. If not explicitly defined for this collection, will be inherited from the parent DB

    -

    Returns undefined | WriteConcern

Methods

Methods

  • Perform a bulkWrite operation without a fluent API

    +

Returns AggregationCursor<T>

  • An estimated count of matching documents in the db to a filter.

    +
  • An estimated count of matching documents in the db to a filter.

    NOTE: This method has been deprecated, since it does not provide an accurate count of the documents in a collection. To obtain an accurate count of documents in the collection, use Collection#countDocuments| countDocuments. To obtain an estimated count of all documents in the collection, use Collection#estimatedDocumentCount| estimatedDocumentCount.

    Parameters

    Returns Promise<number>

    use Collection#countDocuments| countDocuments or Collection#estimatedDocumentCount| estimatedDocumentCount instead

    -
  • Gets the number of documents matching the filter. +

-
  • Creates an index on the db and collection collection.

    +
  • Creates an index on the db and collection collection.

    Parameters

    Returns Promise<string>

    const collection = client.db('foo').collection('bar');

    await collection.createIndex({ a: 1, b: -1 });

    // Alternate syntax for { c: 1, d: -1 } that ensures order of indexes
    await collection.createIndex([ [c, 1], [d, -1] ]);

    // Equivalent to { e: 1 }
    await collection.createIndex('e');

    // Equivalent to { f: 1, g: 1 }
    await collection.createIndex(['f', 'g'])

    // Equivalent to { h: 1, i: -1 }
    await collection.createIndex([ { h: 1 }, { i: -1 } ]);

    // Equivalent to { j: 1, k: -1, l: 2d }
    await collection.createIndex(['j', ['k', -1], { l: '2d' }])
    -
  • Creates multiple indexes in the collection, this method is only supported for +

  • Creates multiple indexes in the collection, this method is only supported for MongoDB 2.6 or higher. Earlier version of MongoDB will throw a command not supported error.

    Note: Unlike Collection#createIndex| createIndex, this function takes in raw index specifications. @@ -138,33 +138,33 @@

Returns Promise<string[]>

const collection = client.db('foo').collection('bar');
await collection.createIndexes([
// Simple index on field fizz
{
key: { fizz: 1 },
}
// wildcard index
{
key: { '$**': 1 }
},
// named index on darmok and jalad
{
key: { darmok: 1, jalad: -1 }
name: 'tanagra'
}
]);
-

Returns Promise<DeleteResult>

Returns Promise<DeleteResult>

Returns Promise<Flatten<WithId<TSchema>[Key]>[]>

  • Type Parameters

    • Key extends string | number | symbol

    Parameters

    Returns Promise<Flatten<WithId<TSchema>[Key]>[]>

  • Type Parameters

    • Key extends string | number | symbol

    Parameters

    Returns Promise<Flatten<WithId<TSchema>[Key]>[]>

  • Parameters

    • key: string

    Returns Promise<any[]>

  • Parameters

    Returns Promise<any[]>

  • Parameters

    Returns Promise<any[]>

  • Returns Promise<boolean>

    Returns Promise<Document>

    Returns Promise<boolean>

    Returns Promise<ModifyResult<TSchema>>

  • Parameters

    Returns Promise<null | WithId<TSchema>>

  • Parameters

    Returns Promise<null | WithId<TSchema>>

  • Parameters

    Returns Promise<null | WithId<TSchema>>

  • Returns Promise<ModifyResult<TSchema>>

  • Parameters

    Returns Promise<null | WithId<TSchema>>

  • Parameters

    Returns Promise<null | WithId<TSchema>>

  • Parameters

    Returns Promise<null | WithId<TSchema>>

  • Returns Promise<ModifyResult<TSchema>>

  • Parameters

    Returns Promise<null | WithId<TSchema>>

  • Parameters

    Returns Promise<null | WithId<TSchema>>

  • Parameters

    Returns Promise<null | WithId<TSchema>>

  • Returns Promise<IndexDescriptionInfo[]>

  • Parameters

    Returns Promise<IndexDescriptionCompact>

  • Parameters

    Returns Promise<IndexDescriptionCompact | IndexDescriptionInfo[]>

  • Parameters

    Returns Promise<IndexDescriptionInfo[]>

  • Returns Promise<boolean>

    Returns Promise<IndexDescriptionInfo[]>

  • Parameters

    Returns Promise<IndexDescriptionCompact>

  • Parameters

    Returns Promise<IndexDescriptionCompact | IndexDescriptionInfo[]>

  • Returns Promise<IndexDescriptionCompact>

  • Returns Promise<InsertManyResult<TSchema>>

    Returns Promise<InsertOneResult<TSchema>>

    Returns Promise<boolean>

    Returns ListIndexesCursor

    Returns Promise<Document>

    Returns Promise<UpdateResult<TSchema>>

    Returns Promise<UpdateResult<TSchema>>

    Returns Promise<UpdateResult<TSchema>>

    +
    diff --git a/docs/Next/classes/FindOperators.html b/docs/Next/classes/FindOperators.html index 1e9b8ae89c5..8ac8e3fb49c 100644 --- a/docs/Next/classes/FindOperators.html +++ b/docs/Next/classes/FindOperators.html @@ -1,6 +1,6 @@ FindOperators | mongodb

    Class FindOperators

    A builder object that is returned from BulkOperationBase#find. Is used to build a write operation that involves a query filter.

    -

    Properties

    Properties

    Methods

    Properties

    bulkOperation: BulkOperationBase

    Methods

    • Specifies arrayFilters for UpdateOne or UpdateMany bulk operations.

      -

      Parameters

      Returns this

    • Upsert modifier for update bulk operation, noting that this operation is an upsert.

      -

      Returns this

    +

    Properties

    bulkOperation: BulkOperationBase

    Methods

    • Specifies arrayFilters for UpdateOne or UpdateMany bulk operations.

      +

      Parameters

      Returns this

    • Upsert modifier for update bulk operation, noting that this operation is an upsert.

      +

      Returns this

    diff --git a/docs/Next/classes/MongoAPIError.html b/docs/Next/classes/MongoAPIError.html index 0dee15ba7df..4f7b9434c2e 100644 --- a/docs/Next/classes/MongoAPIError.html +++ b/docs/Next/classes/MongoAPIError.html @@ -1,5 +1,5 @@ MongoAPIError | mongodb

    Class MongoAPIError

    An error generated when the driver API is used incorrectly

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -18,12 +18,12 @@

    Meant for internal use only.

    Parameters

    • message: string
    • Optionaloptions: {
          cause?: Error;
      }
      • Optionalcause?: Error

    Returns MongoAPIError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoAWSError.html b/docs/Next/classes/MongoAWSError.html index c1982f7de8c..55dab98ee92 100644 --- a/docs/Next/classes/MongoAWSError.html +++ b/docs/Next/classes/MongoAWSError.html @@ -1,6 +1,6 @@ MongoAWSError | mongodb

    Class MongoAWSError

    A error generated when the user attempts to authenticate via AWS, but fails

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -19,12 +19,12 @@

    Meant for internal use only.

    Parameters

    • message: string
    • Optionaloptions: {
          cause?: Error;
      }
      • Optionalcause?: Error

    Returns MongoAWSError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoAzureError.html b/docs/Next/classes/MongoAzureError.html index b92027a133d..c7621c86866 100644 --- a/docs/Next/classes/MongoAzureError.html +++ b/docs/Next/classes/MongoAzureError.html @@ -1,6 +1,6 @@ MongoAzureError | mongodb

    Class MongoAzureError

    A error generated when the user attempts to authenticate via Azure, but fails.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -19,12 +19,12 @@

    Meant for internal use only.

    Parameters

    • message: string

    Returns MongoAzureError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoBatchReExecutionError.html b/docs/Next/classes/MongoBatchReExecutionError.html index 7ef45a874a4..49d90b7ffe2 100644 --- a/docs/Next/classes/MongoBatchReExecutionError.html +++ b/docs/Next/classes/MongoBatchReExecutionError.html @@ -1,6 +1,6 @@ MongoBatchReExecutionError | mongodb

    Class MongoBatchReExecutionError

    An error generated when a batch command is re-executed after one of the commands in the batch has failed

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -19,12 +19,12 @@

    Meant for internal use only.

    Parameters

    • message: string = 'This batch has already been executed, create new batch to execute'

    Returns MongoBatchReExecutionError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoBulkWriteError.html b/docs/Next/classes/MongoBulkWriteError.html index 73931203569..b5871296ce2 100644 --- a/docs/Next/classes/MongoBulkWriteError.html +++ b/docs/Next/classes/MongoBulkWriteError.html @@ -1,5 +1,5 @@ MongoBulkWriteError | mongodb

    Class MongoBulkWriteError

    An error indicating an unsuccessful Bulk Write

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? codeName? @@ -33,20 +33,20 @@

    Meant for internal use only.

    Parameters

    Returns MongoBulkWriteError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    codeName?: string
    connectionGeneration?: number
    errInfo?: Document
    errorResponse: ErrorDescription

    Raw error result document returned by server.

    -
    message: string
    ok?: number
    stack?: string
    topologyVersion?: TopologyVersion
    writeConcernError?: Document
    writeErrors: OneOrMore<WriteError> = []
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    codeName?: string
    connectionGeneration?: number
    errInfo?: Document
    errorResponse: ErrorDescription

    Raw error result document returned by server.

    +
    message: string
    ok?: number
    stack?: string
    topologyVersion?: TopologyVersion
    writeConcernError?: Document
    writeErrors: OneOrMore<WriteError> = []
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get insertedIds(): {
          [key: number]: any;
      }
    • Inserted document generated Id's, hash key is the index of the originating operation

      -

      Returns {
          [key: number]: any;
      }

      • [key: number]: any
    • get matchedCount(): number
    • Number of documents matched for update.

      -

      Returns number

    • get upsertedIds(): {
          [key: number]: any;
      }
    • Upserted document generated Id's, hash key is the index of the originating operation

      -

      Returns {
          [key: number]: any;
      }

      • [key: number]: any

    Methods

    • Checks the error to see if it has an error label

      +

      Returns number

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get insertedIds(): {
          [key: number]: any;
      }
    • Inserted document generated Id's, hash key is the index of the originating operation

      +

      Returns {
          [key: number]: any;
      }

      • [key: number]: any
    • get matchedCount(): number
    • Number of documents matched for update.

      +

      Returns number

    • get upsertedIds(): {
          [key: number]: any;
      }
    • Upserted document generated Id's, hash key is the index of the originating operation

      +

      Returns {
          [key: number]: any;
      }

      • [key: number]: any

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoChangeStreamError.html b/docs/Next/classes/MongoChangeStreamError.html index 2640db8b2c4..b1ef7fa0c5a 100644 --- a/docs/Next/classes/MongoChangeStreamError.html +++ b/docs/Next/classes/MongoChangeStreamError.html @@ -1,5 +1,5 @@ MongoChangeStreamError | mongodb

    Class MongoChangeStreamError

    An error generated when a ChangeStream operation fails to execute.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -18,12 +18,12 @@

    Meant for internal use only.

    Parameters

    • message: string

    Returns MongoChangeStreamError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoClient.html b/docs/Next/classes/MongoClient.html index 96c2350ce6d..9add53fe999 100644 --- a/docs/Next/classes/MongoClient.html +++ b/docs/Next/classes/MongoClient.html @@ -3,7 +3,7 @@
    import { MongoClient } from 'mongodb';

    // Enable command monitoring for debugging
    const client = new MongoClient('mongodb://localhost:27017', { monitorCommands: true });

    client.on('commandStarted', started => console.log(started));
    client.db().collection('pets');
    await client.insertOne({ name: 'spot', kind: 'dog' });
    -

    Hierarchy (view full)

    Implements

    Constructors

    Hierarchy (view full)

    Implements

    Constructors

    Properties

    Constructors

    Properties

    [asyncDispose]: (() => Promise<void>)

    An alias for MongoClient.close().

    -
    options: Readonly<Omit<MongoOptions,
        | "ca"
        | "cert"
        | "crl"
        | "key"
        | "monitorCommands">> & Pick<MongoOptions,
        | "ca"
        | "cert"
        | "crl"
        | "key"
        | "monitorCommands">

    The consolidate, parsed, transformed and merged options.

    -
    captureRejections: boolean

    Value: boolean

    +

    Constructors

    Properties

    [asyncDispose]: (() => Promise<void>)

    An alias for MongoClient.close().

    +
    options: Readonly<Omit<MongoOptions,
        | "ca"
        | "cert"
        | "crl"
        | "key"
        | "monitorCommands">> & Pick<MongoOptions,
        | "ca"
        | "cert"
        | "crl"
        | "key"
        | "monitorCommands">

    The consolidate, parsed, transformed and merged options.

    +
    captureRejections: boolean

    Value: boolean

    Change the default captureRejections option on all new EventEmitter objects.

    v13.4.0, v12.16.0

    captureRejectionSymbol: typeof captureRejectionSymbol

    v13.6.0, v12.17.0

    -

    Accessors

    Methods

    • Type Parameters

      • K

      Parameters

      • error: Error
      • event: string | symbol
      • Rest...args: AnyRest

      Returns void

    Accessors

    Methods

    • Type Parameters

      • K

      Parameters

      • error: Error
      • event: string | symbol
      • Rest...args: AnyRest

      Returns void

    • Alias for emitter.on(eventName, listener).

      Type Parameters

      • EventKey extends
            | "error"
            | "timeout"
            | "close"
            | "open"
            | "serverOpening"
            | "serverClosed"
            | "serverDescriptionChanged"
            | "topologyOpening"
            | "topologyClosed"
            | "topologyDescriptionChanged"
            | "connectionPoolCreated"
            | "connectionPoolClosed"
            | "connectionPoolCleared"
            | "connectionPoolReady"
            | "connectionCreated"
            | "connectionReady"
            | "connectionClosed"
            | "connectionCheckOutStarted"
            | "connectionCheckOutFailed"
            | "connectionCheckedOut"
            | "connectionCheckedIn"
            | "commandStarted"
            | "commandSucceeded"
            | "commandFailed"
            | "serverHeartbeatStarted"
            | "serverHeartbeatSucceeded"
            | "serverHeartbeatFailed"

      Parameters

      Returns this

      v0.1.26

    • Alias for emitter.on(eventName, listener).

      Parameters

      Returns this

      v0.1.26

      @@ -95,7 +95,7 @@

      Returns Promise<ClientBulkWriteResult>

      A ClientBulkWriteResult for acknowledged writes and ok: 1 for unacknowledged writes.

      -
    • Cleans up client-side resources used by the MongoCLient and . This includes:

      +
    • Connect to MongoDB using a url

      Returns Promise<MongoClient>

      Calling connect is optional since the first operation you perform will call connect if it's needed. timeoutMS will bound the time any operation can take before throwing a timeout error. However, when the operation being run is automatically connecting your MongoClient the timeoutMS will not apply to the time taken to connect the MongoClient. This means the time to setup the MongoClient does not count against timeoutMS. If you are using timeoutMS we recommend connecting your client explicitly in advance of any operation to avoid this inconsistent execution time.

      docs.mongodb.org/manual/reference/connection-string/

      -
    • Create a new Db instance sharing the current socket connections.

      +
    • Create a new Db instance sharing the current socket connections.

      Parameters

      • OptionaldbName: string

        The name of the database we want to use. If not provided, use database name from connection string.

      • Optionaloptions: DbOptions

        Optional settings for Db construction

        -

      Returns Db

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +

    Returns Db

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments to each.

      Returns true if the event had listeners, false otherwise.

      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener @@ -387,7 +387,7 @@

      Returns ClientSession

      A ClientSession instance may only be passed to operations being performed on the same MongoClient it was started from.

      -
    • Returns a copy of the array of listeners for the event named eventName.

      +
    • Returns a copy of the array of listeners for the event named eventName.

      For EventEmitters this behaves exactly the same as calling .listeners on the emitter.

      For EventTargets this is the only way to get the event listeners for the diff --git a/docs/Next/classes/MongoClientBulkWriteCursorError.html b/docs/Next/classes/MongoClientBulkWriteCursorError.html index 70a1c693b26..f7955edbfd9 100644 --- a/docs/Next/classes/MongoClientBulkWriteCursorError.html +++ b/docs/Next/classes/MongoClientBulkWriteCursorError.html @@ -1,5 +1,5 @@ MongoClientBulkWriteCursorError | mongodb

      Class MongoClientBulkWriteCursorError

      An error indicating that an error occurred when processing bulk write results.

      -

      Hierarchy (view full)

      Constructors

      Hierarchy (view full)

      Constructors

      Properties

      cause? code? connectionGeneration? @@ -18,12 +18,12 @@

      Meant for internal use only.

      Parameters

      • message: string

      Returns MongoClientBulkWriteCursorError

      This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

      -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoClientBulkWriteError.html b/docs/Next/classes/MongoClientBulkWriteError.html index c9d0614d9bf..02fd88d7a3f 100644 --- a/docs/Next/classes/MongoClientBulkWriteError.html +++ b/docs/Next/classes/MongoClientBulkWriteError.html @@ -1,5 +1,5 @@ MongoClientBulkWriteError | mongodb

    Class MongoClientBulkWriteError

    An error indicating that an error occurred when executing the bulk write.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    Constructors

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    codeName?: string
    connectionGeneration?: number
    errInfo?: Document
    errorResponse: ErrorDescription

    Raw error result document returned by server.

    -
    message: string
    ok?: number
    partialResult?: ClientBulkWriteResult

    The results of any successful operations that were performed before the error was +

    Returns MongoClientBulkWriteError

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    codeName?: string
    connectionGeneration?: number
    errInfo?: Document
    errorResponse: ErrorDescription

    Raw error result document returned by server.

    +
    message: string
    ok?: number
    partialResult?: ClientBulkWriteResult

    The results of any successful operations that were performed before the error was encountered.

    -
    stack?: string
    topologyVersion?: TopologyVersion
    writeConcernError?: Document
    writeConcernErrors: Document[]

    Write concern errors that occurred while executing the bulk write. This list may have +

    stack?: string
    topologyVersion?: TopologyVersion
    writeConcernError?: Document
    writeConcernErrors: Document[]

    Write concern errors that occurred while executing the bulk write. This list may have multiple items if more than one server command was required to execute the bulk write.

    -
    writeErrors: Map<number, ClientBulkWriteError>

    Errors that occurred during the execution of individual write operations. This map will +

    writeErrors: Map<number, ClientBulkWriteError>

    Errors that occurred during the execution of individual write operations. This map will contain at most one entry if the bulk write was ordered.

    -
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoClientBulkWriteExecutionError.html b/docs/Next/classes/MongoClientBulkWriteExecutionError.html index ebee4aa070f..02c675463a3 100644 --- a/docs/Next/classes/MongoClientBulkWriteExecutionError.html +++ b/docs/Next/classes/MongoClientBulkWriteExecutionError.html @@ -1,5 +1,5 @@ MongoClientBulkWriteExecutionError | mongodb

    Class MongoClientBulkWriteExecutionError

    An error indicating that an error occurred on the client when executing a client bulk write.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -18,12 +18,12 @@

    Meant for internal use only.

    Parameters

    • message: string

    Returns MongoClientBulkWriteExecutionError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoCompatibilityError.html b/docs/Next/classes/MongoCompatibilityError.html index c096127c504..ec1e58c5067 100644 --- a/docs/Next/classes/MongoCompatibilityError.html +++ b/docs/Next/classes/MongoCompatibilityError.html @@ -1,6 +1,6 @@ MongoCompatibilityError | mongodb

    Class MongoCompatibilityError

    An error generated when a feature that is not enabled or allowed for the current server configuration is used

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -19,12 +19,12 @@

    Meant for internal use only.

    Parameters

    • message: string

    Returns MongoCompatibilityError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoCryptAzureKMSRequestError.html b/docs/Next/classes/MongoCryptAzureKMSRequestError.html index 4f3c1128684..63a626c68ce 100644 --- a/docs/Next/classes/MongoCryptAzureKMSRequestError.html +++ b/docs/Next/classes/MongoCryptAzureKMSRequestError.html @@ -20,12 +20,12 @@

    Parameters

    Returns MongoCryptAzureKMSRequestError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    Properties

    body?: Document

    The body of the http response that failed, if present.

    -
    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoCryptCreateDataKeyError.html b/docs/Next/classes/MongoCryptCreateDataKeyError.html index 8590d86d170..3c038d63684 100644 --- a/docs/Next/classes/MongoCryptCreateDataKeyError.html +++ b/docs/Next/classes/MongoCryptCreateDataKeyError.html @@ -19,12 +19,12 @@

    Meant for internal use only.

    Parameters

    Returns MongoCryptCreateDataKeyError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    encryptedFields: Document
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    encryptedFields: Document
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoCryptCreateEncryptedCollectionError.html b/docs/Next/classes/MongoCryptCreateEncryptedCollectionError.html index d956d83ffae..9f97d1d46e3 100644 --- a/docs/Next/classes/MongoCryptCreateEncryptedCollectionError.html +++ b/docs/Next/classes/MongoCryptCreateEncryptedCollectionError.html @@ -19,12 +19,12 @@

    Meant for internal use only.

    Parameters

    Returns MongoCryptCreateEncryptedCollectionError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    encryptedFields: Document
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    encryptedFields: Document
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoCryptError.html b/docs/Next/classes/MongoCryptError.html index 5f0d6166437..94078417985 100644 --- a/docs/Next/classes/MongoCryptError.html +++ b/docs/Next/classes/MongoCryptError.html @@ -18,12 +18,12 @@

    Meant for internal use only.

    Parameters

    Returns MongoCryptError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoCryptInvalidArgumentError.html b/docs/Next/classes/MongoCryptInvalidArgumentError.html index da59487ffb5..1dfe4650a6d 100644 --- a/docs/Next/classes/MongoCryptInvalidArgumentError.html +++ b/docs/Next/classes/MongoCryptInvalidArgumentError.html @@ -18,12 +18,12 @@

    Meant for internal use only.

    Parameters

    Returns MongoCryptInvalidArgumentError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoCryptKMSRequestNetworkTimeoutError.html b/docs/Next/classes/MongoCryptKMSRequestNetworkTimeoutError.html index ffe275333d4..7ccf061f7d4 100644 --- a/docs/Next/classes/MongoCryptKMSRequestNetworkTimeoutError.html +++ b/docs/Next/classes/MongoCryptKMSRequestNetworkTimeoutError.html @@ -17,12 +17,12 @@

    Meant for internal use only.

    Parameters

    Returns MongoCryptKMSRequestNetworkTimeoutError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoCursorExhaustedError.html b/docs/Next/classes/MongoCursorExhaustedError.html index 87054604abb..33e5ca521c7 100644 --- a/docs/Next/classes/MongoCursorExhaustedError.html +++ b/docs/Next/classes/MongoCursorExhaustedError.html @@ -1,5 +1,5 @@ MongoCursorExhaustedError | mongodb

    Class MongoCursorExhaustedError

    An error thrown when an attempt is made to read from a cursor that has been exhausted

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -18,12 +18,12 @@

    Meant for internal use only.

    Parameters

    • Optionalmessage: string

    Returns MongoCursorExhaustedError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoCursorInUseError.html b/docs/Next/classes/MongoCursorInUseError.html index add883d3d28..8aa6a7ead7c 100644 --- a/docs/Next/classes/MongoCursorInUseError.html +++ b/docs/Next/classes/MongoCursorInUseError.html @@ -1,6 +1,6 @@ MongoCursorInUseError | mongodb

    Class MongoCursorInUseError

    An error thrown when the user attempts to add options to a cursor that has already been initialized

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -19,12 +19,12 @@

    Meant for internal use only.

    Parameters

    • message: string = 'Cursor is already initialized'

    Returns MongoCursorInUseError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoDecompressionError.html b/docs/Next/classes/MongoDecompressionError.html index a468b0b910e..d7e2ce3607b 100644 --- a/docs/Next/classes/MongoDecompressionError.html +++ b/docs/Next/classes/MongoDecompressionError.html @@ -1,6 +1,6 @@ MongoDecompressionError | mongodb

    Class MongoDecompressionError

    An error generated when the driver fails to decompress data received from the server.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -19,12 +19,12 @@

    Meant for internal use only.

    Parameters

    • message: string

    Returns MongoDecompressionError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoDriverError.html b/docs/Next/classes/MongoDriverError.html index b0c9dcc94ad..57bc97b1adf 100644 --- a/docs/Next/classes/MongoDriverError.html +++ b/docs/Next/classes/MongoDriverError.html @@ -1,5 +1,5 @@ MongoDriverError | mongodb

    Class MongoDriverError

    An error generated by the driver

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -18,12 +18,12 @@

    Meant for internal use only.

    Parameters

    • message: string
    • Optionaloptions: {
          cause?: Error;
      }
      • Optionalcause?: Error

    Returns MongoDriverError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoError.html b/docs/Next/classes/MongoError.html index b7d4de29ce7..ad9bbf220c1 100644 --- a/docs/Next/classes/MongoError.html +++ b/docs/Next/classes/MongoError.html @@ -1,4 +1,4 @@ -MongoError | mongodb

    Class MongoError

    Hierarchy (view full)

    Constructors

    constructor +MongoError | mongodb

    Class MongoError

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -17,12 +17,12 @@

    Meant for internal use only.

    Parameters

    • message: string
    • Optionaloptions: {
          cause?: Error;
      }
      • Optionalcause?: Error

    Returns MongoError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    Methods

    • Parameters

      • label: string

      Returns void

    • Checks the error to see if it has an error label

      +

      Returns string

    Methods

    • Parameters

      • label: string

      Returns void

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      +
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoExpiredSessionError.html b/docs/Next/classes/MongoExpiredSessionError.html index 31b421042d5..1c4cce09952 100644 --- a/docs/Next/classes/MongoExpiredSessionError.html +++ b/docs/Next/classes/MongoExpiredSessionError.html @@ -1,6 +1,6 @@ MongoExpiredSessionError | mongodb

    Class MongoExpiredSessionError

    An error generated when the user attempts to operate on a session that has expired or has been closed.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -19,12 +19,12 @@

    Meant for internal use only.

    Parameters

    • message: string = 'Cannot use a session that has ended'

    Returns MongoExpiredSessionError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoGCPError.html b/docs/Next/classes/MongoGCPError.html index 18284713e88..e4c5599fea0 100644 --- a/docs/Next/classes/MongoGCPError.html +++ b/docs/Next/classes/MongoGCPError.html @@ -1,6 +1,6 @@ MongoGCPError | mongodb

    Class MongoGCPError

    A error generated when the user attempts to authenticate via GCP, but fails.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -19,12 +19,12 @@

    Meant for internal use only.

    Parameters

    • message: string

    Returns MongoGCPError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoGridFSChunkError.html b/docs/Next/classes/MongoGridFSChunkError.html index 4cc080de568..44396050f97 100644 --- a/docs/Next/classes/MongoGridFSChunkError.html +++ b/docs/Next/classes/MongoGridFSChunkError.html @@ -1,6 +1,6 @@ MongoGridFSChunkError | mongodb

    Class MongoGridFSChunkError

    An error generated when a malformed or invalid chunk is encountered when reading from a GridFSStream.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -19,12 +19,12 @@

    Meant for internal use only.

    Parameters

    • message: string

    Returns MongoGridFSChunkError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoGridFSStreamError.html b/docs/Next/classes/MongoGridFSStreamError.html index 5f8f318db11..12a21abc7ab 100644 --- a/docs/Next/classes/MongoGridFSStreamError.html +++ b/docs/Next/classes/MongoGridFSStreamError.html @@ -1,5 +1,5 @@ MongoGridFSStreamError | mongodb

    Class MongoGridFSStreamError

    An error generated when a GridFSStream operation fails to execute.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -18,12 +18,12 @@

    Meant for internal use only.

    Parameters

    • message: string

    Returns MongoGridFSStreamError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoInvalidArgumentError.html b/docs/Next/classes/MongoInvalidArgumentError.html index d167b9ca133..5871e17a9b4 100644 --- a/docs/Next/classes/MongoInvalidArgumentError.html +++ b/docs/Next/classes/MongoInvalidArgumentError.html @@ -1,6 +1,6 @@ MongoInvalidArgumentError | mongodb

    Class MongoInvalidArgumentError

    An error generated when the user supplies malformed or unexpected arguments or when a required argument or field is not provided.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -19,12 +19,12 @@

    Meant for internal use only.

    Parameters

    • message: string
    • Optionaloptions: {
          cause?: Error;
      }
      • Optionalcause?: Error

    Returns MongoInvalidArgumentError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoKerberosError.html b/docs/Next/classes/MongoKerberosError.html index 6f54310fdc4..584a47edf06 100644 --- a/docs/Next/classes/MongoKerberosError.html +++ b/docs/Next/classes/MongoKerberosError.html @@ -1,6 +1,6 @@ MongoKerberosError | mongodb

    Class MongoKerberosError

    A error generated when the user attempts to authenticate via Kerberos, but fails to connect to the Kerberos client.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -19,12 +19,12 @@

    Meant for internal use only.

    Parameters

    • message: string

    Returns MongoKerberosError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoMissingCredentialsError.html b/docs/Next/classes/MongoMissingCredentialsError.html index 711cfde1987..4673c6f70b9 100644 --- a/docs/Next/classes/MongoMissingCredentialsError.html +++ b/docs/Next/classes/MongoMissingCredentialsError.html @@ -1,6 +1,6 @@ MongoMissingCredentialsError | mongodb

    Class MongoMissingCredentialsError

    An error generated when the user fails to provide authentication credentials before attempting to connect to a mongo server instance.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -19,12 +19,12 @@

    Meant for internal use only.

    Parameters

    • message: string

    Returns MongoMissingCredentialsError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoMissingDependencyError.html b/docs/Next/classes/MongoMissingDependencyError.html index dd0719563e3..61e1c0cf855 100644 --- a/docs/Next/classes/MongoMissingDependencyError.html +++ b/docs/Next/classes/MongoMissingDependencyError.html @@ -1,5 +1,5 @@ MongoMissingDependencyError | mongodb

    Class MongoMissingDependencyError

    An error generated when a required module or dependency is not present in the local environment

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause code? connectionGeneration? @@ -19,13 +19,13 @@

    Meant for internal use only.

    Parameters

    • message: string
    • options: {
          cause: Error;
          dependencyName: string;
      }
      • cause: Error
      • dependencyName: string

    Returns MongoMissingDependencyError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause: Error

    This property is assigned in the Error constructor.

    -
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    dependencyName: string
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause: Error

    This property is assigned in the Error constructor.

    +
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    dependencyName: string
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoNetworkError.html b/docs/Next/classes/MongoNetworkError.html index 0f072607ef6..bea806da4c5 100644 --- a/docs/Next/classes/MongoNetworkError.html +++ b/docs/Next/classes/MongoNetworkError.html @@ -1,5 +1,5 @@ MongoNetworkError | mongodb

    Class MongoNetworkError

    An error indicating an issue with the network, including TCP errors and timeouts.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -18,12 +18,12 @@

    Meant for internal use only.

    Parameters

    Returns MongoNetworkError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoNetworkTimeoutError.html b/docs/Next/classes/MongoNetworkTimeoutError.html index c5f4abb1898..008bd2fe34d 100644 --- a/docs/Next/classes/MongoNetworkTimeoutError.html +++ b/docs/Next/classes/MongoNetworkTimeoutError.html @@ -1,5 +1,5 @@ MongoNetworkTimeoutError | mongodb

    Class MongoNetworkTimeoutError

    An error indicating a network timeout occurred

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -18,12 +18,12 @@

    Meant for internal use only.

    Parameters

    Returns MongoNetworkTimeoutError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoNotConnectedError.html b/docs/Next/classes/MongoNotConnectedError.html index 78256b2cd7e..c8696703b0a 100644 --- a/docs/Next/classes/MongoNotConnectedError.html +++ b/docs/Next/classes/MongoNotConnectedError.html @@ -1,6 +1,6 @@ MongoNotConnectedError | mongodb

    Class MongoNotConnectedError

    An error thrown when the user attempts to operate on a database or collection through a MongoClient that has not yet successfully called the "connect" method

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -19,12 +19,12 @@

    Meant for internal use only.

    Parameters

    • message: string

    Returns MongoNotConnectedError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoOIDCError.html b/docs/Next/classes/MongoOIDCError.html index 2f9614c2cb6..4e4386ab347 100644 --- a/docs/Next/classes/MongoOIDCError.html +++ b/docs/Next/classes/MongoOIDCError.html @@ -1,6 +1,6 @@ MongoOIDCError | mongodb

    Class MongoOIDCError

    A error generated when the user attempts to authenticate via OIDC callbacks, but fails.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -19,12 +19,12 @@

    Meant for internal use only.

    Parameters

    • message: string

    Returns MongoOIDCError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoOperationTimeoutError.html b/docs/Next/classes/MongoOperationTimeoutError.html index aa0b0f6affe..0cacd27ad9d 100644 --- a/docs/Next/classes/MongoOperationTimeoutError.html +++ b/docs/Next/classes/MongoOperationTimeoutError.html @@ -1,7 +1,7 @@ MongoOperationTimeoutError | mongodb

    Class MongoOperationTimeoutError

    try {
    await blogs.insertOne(blogPost, { timeoutMS: 60_000 })
    } catch (error) {
    if (error instanceof MongoOperationTimeoutError) {
    console.log(`Oh no! writer's block!`, error);
    }
    }
    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -20,12 +20,12 @@

    Meant for internal use only.

    Parameters

    • message: string
    • Optionaloptions: {
          cause?: Error;
      }
      • Optionalcause?: Error

    Returns MongoOperationTimeoutError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoParseError.html b/docs/Next/classes/MongoParseError.html index 07fcf83149d..efbd1052f86 100644 --- a/docs/Next/classes/MongoParseError.html +++ b/docs/Next/classes/MongoParseError.html @@ -1,5 +1,5 @@ MongoParseError | mongodb

    Class MongoParseError

    An error used when attempting to parse a value (like a connection string)

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -18,12 +18,12 @@

    Meant for internal use only.

    Parameters

    • message: string

    Returns MongoParseError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoRuntimeError.html b/docs/Next/classes/MongoRuntimeError.html index 79d4783740e..e34053e509b 100644 --- a/docs/Next/classes/MongoRuntimeError.html +++ b/docs/Next/classes/MongoRuntimeError.html @@ -1,6 +1,6 @@ MongoRuntimeError | mongodb

    Class MongoRuntimeError

    An error generated when the driver encounters unexpected input or reaches an unexpected/invalid internal state.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -19,12 +19,12 @@

    Meant for internal use only.

    Parameters

    • message: string
    • Optionaloptions: {
          cause?: Error;
      }
      • Optionalcause?: Error

    Returns MongoRuntimeError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoServerClosedError.html b/docs/Next/classes/MongoServerClosedError.html index f2d6df4499a..66ab428ecb2 100644 --- a/docs/Next/classes/MongoServerClosedError.html +++ b/docs/Next/classes/MongoServerClosedError.html @@ -1,6 +1,6 @@ MongoServerClosedError | mongodb

    Class MongoServerClosedError

    An error generated when an attempt is made to operate on a closed/closing server.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -19,12 +19,12 @@

    Meant for internal use only.

    Parameters

    • message: string = 'Server is closed'

    Returns MongoServerClosedError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoServerError.html b/docs/Next/classes/MongoServerError.html index bfe9a6dbe25..98a487c8631 100644 --- a/docs/Next/classes/MongoServerError.html +++ b/docs/Next/classes/MongoServerError.html @@ -1,5 +1,5 @@ MongoServerError | mongodb

    Class MongoServerError

    An error coming from the mongo server

    -

    Hierarchy (view full)

    Indexable

    • [key: string]: any

    Constructors

    Hierarchy (view full)

    Indexable

    • [key: string]: any

    Constructors

    Properties

    cause? code? codeName? @@ -23,13 +23,13 @@

    Meant for internal use only.

    Parameters

    Returns MongoServerError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    codeName?: string
    connectionGeneration?: number
    errInfo?: Document
    errorResponse: ErrorDescription

    Raw error result document returned by server.

    -
    message: string
    ok?: number
    stack?: string
    topologyVersion?: TopologyVersion
    writeConcernError?: Document
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    codeName?: string
    connectionGeneration?: number
    errInfo?: Document
    errorResponse: ErrorDescription

    Raw error result document returned by server.

    +
    message: string
    ok?: number
    stack?: string
    topologyVersion?: TopologyVersion
    writeConcernError?: Document
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoServerSelectionError.html b/docs/Next/classes/MongoServerSelectionError.html index 31ddc7b5bee..eda084f4123 100644 --- a/docs/Next/classes/MongoServerSelectionError.html +++ b/docs/Next/classes/MongoServerSelectionError.html @@ -1,5 +1,5 @@ MongoServerSelectionError | mongodb

    Class MongoServerSelectionError

    An error signifying a client-side server selection error

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -19,13 +19,13 @@

    Meant for internal use only.

    Parameters

    Returns MongoServerSelectionError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string

    An optional reason context, such as an error saved during flow of monitoring and selecting servers

    -
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string

    An optional reason context, such as an error saved during flow of monitoring and selecting servers

    +
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoStalePrimaryError.html b/docs/Next/classes/MongoStalePrimaryError.html index 4a315a7ecb5..e7e01c4c205 100644 --- a/docs/Next/classes/MongoStalePrimaryError.html +++ b/docs/Next/classes/MongoStalePrimaryError.html @@ -1,5 +1,5 @@ MongoStalePrimaryError | mongodb

    Class MongoStalePrimaryError

    An error generated when a primary server is marked stale, never directly thrown

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -18,12 +18,12 @@

    Meant for internal use only.

    Parameters

    • message: string
    • Optionaloptions: {
          cause?: Error;
      }
      • Optionalcause?: Error

    Returns MongoStalePrimaryError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoSystemError.html b/docs/Next/classes/MongoSystemError.html index 2d73e59afa8..60fa7612883 100644 --- a/docs/Next/classes/MongoSystemError.html +++ b/docs/Next/classes/MongoSystemError.html @@ -1,5 +1,5 @@ MongoSystemError | mongodb

    Class MongoSystemError

    An error signifying a general system issue

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -19,13 +19,13 @@

    Meant for internal use only.

    Parameters

    Returns MongoSystemError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string

    An optional reason context, such as an error saved during flow of monitoring and selecting servers

    -
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string

    An optional reason context, such as an error saved during flow of monitoring and selecting servers

    +
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoTailableCursorError.html b/docs/Next/classes/MongoTailableCursorError.html index 488f95132b5..b687273bba4 100644 --- a/docs/Next/classes/MongoTailableCursorError.html +++ b/docs/Next/classes/MongoTailableCursorError.html @@ -1,5 +1,5 @@ MongoTailableCursorError | mongodb

    Class MongoTailableCursorError

    An error thrown when the user calls a function or method not supported on a tailable cursor

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -18,12 +18,12 @@

    Meant for internal use only.

    Parameters

    • message: string = 'Tailable cursor does not support this operation'

    Returns MongoTailableCursorError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoTopologyClosedError.html b/docs/Next/classes/MongoTopologyClosedError.html index baf179db417..11b15780e76 100644 --- a/docs/Next/classes/MongoTopologyClosedError.html +++ b/docs/Next/classes/MongoTopologyClosedError.html @@ -1,6 +1,6 @@ MongoTopologyClosedError | mongodb

    Class MongoTopologyClosedError

    An error generated when an attempt is made to operate on a dropped, or otherwise unavailable, database.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -19,12 +19,12 @@

    Meant for internal use only.

    Parameters

    • message: string = 'Topology is closed'

    Returns MongoTopologyClosedError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoTransactionError.html b/docs/Next/classes/MongoTransactionError.html index 1f49e6dce50..b5c450d8439 100644 --- a/docs/Next/classes/MongoTransactionError.html +++ b/docs/Next/classes/MongoTransactionError.html @@ -1,6 +1,6 @@ MongoTransactionError | mongodb

    Class MongoTransactionError

    An error generated when the user makes a mistake in the usage of transactions. (e.g. attempting to commit a transaction with a readPreference other than primary)

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -19,12 +19,12 @@

    Meant for internal use only.

    Parameters

    • message: string

    Returns MongoTransactionError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoUnexpectedServerResponseError.html b/docs/Next/classes/MongoUnexpectedServerResponseError.html index 409954de35f..abd47378530 100644 --- a/docs/Next/classes/MongoUnexpectedServerResponseError.html +++ b/docs/Next/classes/MongoUnexpectedServerResponseError.html @@ -7,7 +7,7 @@ selection returns a server that does not support retryable operations, this error is used. This scenario is unlikely as retryable support would also have been determined on the first attempt but it is possible the state change could report a selectable server that does not support retries.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -26,12 +26,12 @@

    Meant for internal use only.

    Parameters

    • message: string
    • Optionaloptions: {
          cause?: Error;
      }
      • Optionalcause?: Error

    Returns MongoUnexpectedServerResponseError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/MongoWriteConcernError.html b/docs/Next/classes/MongoWriteConcernError.html index 165afc548d8..33f90954824 100644 --- a/docs/Next/classes/MongoWriteConcernError.html +++ b/docs/Next/classes/MongoWriteConcernError.html @@ -1,5 +1,5 @@ MongoWriteConcernError | mongodb

    Class MongoWriteConcernError

    An error thrown when the server reports a writeConcernError

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? codeName? @@ -24,14 +24,14 @@

    Meant for internal use only.

    Parameters

    Returns MongoWriteConcernError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    codeName?: string
    connectionGeneration?: number
    errInfo?: Document
    errorResponse: ErrorDescription

    Raw error result document returned by server.

    -
    message: string
    ok?: number
    result: Document

    The result document

    -
    stack?: string
    topologyVersion?: TopologyVersion
    writeConcernError?: Document
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    codeName?: string
    connectionGeneration?: number
    errInfo?: Document
    errorResponse: ErrorDescription

    Raw error result document returned by server.

    +
    message: string
    ok?: number
    result: Document

    The result document

    +
    stack?: string
    topologyVersion?: TopologyVersion
    writeConcernError?: Document
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

      -
    • Create .stack property on a target object

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/Next/classes/OrderedBulkOperation.html b/docs/Next/classes/OrderedBulkOperation.html index 9d995b002f5..c52db54ba3f 100644 --- a/docs/Next/classes/OrderedBulkOperation.html +++ b/docs/Next/classes/OrderedBulkOperation.html @@ -9,14 +9,14 @@ find insert raw -

    Properties

    isOrdered: boolean
    operationId?: number

    Accessors

    Methods

    • Builds a find operation for an update/updateOne/delete/deleteOne/replaceOne. +

    Properties

    isOrdered: boolean
    operationId?: number

    Accessors

    Methods

    • Builds a find operation for an update/updateOne/delete/deleteOne/replaceOne. Returns a builder object used to complete the definition of the operation.

      Parameters

      Returns FindOperators

      const bulkOp = collection.initializeOrderedBulkOp();

      // Add an updateOne to the bulkOp
      bulkOp.find({ a: 1 }).updateOne({ $set: { b: 2 } });

      // Add an updateMany to the bulkOp
      bulkOp.find({ c: 3 }).update({ $set: { d: 4 } });

      // Add an upsert
      bulkOp.find({ e: 5 }).upsert().updateOne({ $set: { f: 6 } });

      // Add a deletion
      bulkOp.find({ g: 7 }).deleteOne();

      // Add a multi deletion
      bulkOp.find({ h: 8 }).delete();

      // Add a replaceOne
      bulkOp.find({ i: 9 }).replaceOne({writeConcern: { j: 10 }});

      // Update using a pipeline (requires Mongodb 4.2 or higher)
      bulk.find({ k: 11, y: { $exists: true }, z: { $exists: true } }).updateOne([
      { $set: { total: { $sum: [ '$y', '$z' ] } } }
      ]);

      // All of the ops will now be executed
      await bulkOp.execute();
      -
    +
    diff --git a/docs/Next/classes/UnorderedBulkOperation.html b/docs/Next/classes/UnorderedBulkOperation.html index 4fb682237dc..6c7838e750d 100644 --- a/docs/Next/classes/UnorderedBulkOperation.html +++ b/docs/Next/classes/UnorderedBulkOperation.html @@ -9,14 +9,14 @@ find insert raw -

    Properties

    isOrdered: boolean
    operationId?: number

    Accessors

    Methods

    • Builds a find operation for an update/updateOne/delete/deleteOne/replaceOne. +

    Properties

    isOrdered: boolean
    operationId?: number

    Accessors

    Methods

    • Builds a find operation for an update/updateOne/delete/deleteOne/replaceOne. Returns a builder object used to complete the definition of the operation.

      Parameters

      Returns FindOperators

      const bulkOp = collection.initializeOrderedBulkOp();

      // Add an updateOne to the bulkOp
      bulkOp.find({ a: 1 }).updateOne({ $set: { b: 2 } });

      // Add an updateMany to the bulkOp
      bulkOp.find({ c: 3 }).update({ $set: { d: 4 } });

      // Add an upsert
      bulkOp.find({ e: 5 }).upsert().updateOne({ $set: { f: 6 } });

      // Add a deletion
      bulkOp.find({ g: 7 }).deleteOne();

      // Add a multi deletion
      bulkOp.find({ h: 8 }).delete();

      // Add a replaceOne
      bulkOp.find({ i: 9 }).replaceOne({writeConcern: { j: 10 }});

      // Update using a pipeline (requires Mongodb 4.2 or higher)
      bulk.find({ k: 11, y: { $exists: true }, z: { $exists: true } }).updateOne([
      { $set: { total: { $sum: [ '$y', '$z' ] } } }
      ]);

      // All of the ops will now be executed
      await bulkOp.execute();
      -
    +
    diff --git a/docs/Next/classes/WriteConcernError.html b/docs/Next/classes/WriteConcernError.html index d17d48e0200..017748d80f0 100644 --- a/docs/Next/classes/WriteConcernError.html +++ b/docs/Next/classes/WriteConcernError.html @@ -1,11 +1,11 @@ WriteConcernError | mongodb

    Class WriteConcernError

    An error representing a failure by the server to apply the requested write concern to the bulk operation.

    -

    Constructors

    Constructors

    Accessors

    Methods

    Constructors

    Accessors

    • get code(): undefined | number
    • Write concern error code.

      -

      Returns undefined | number

    • get errmsg(): undefined | string
    • Write concern error message.

      -

      Returns undefined | string

    Methods

    +

    Constructors

    Accessors

    • get code(): undefined | number
    • Write concern error code.

      +

      Returns undefined | number

    • get errmsg(): undefined | string
    • Write concern error message.

      +

      Returns undefined | string

    Methods

    diff --git a/docs/Next/classes/WriteError.html b/docs/Next/classes/WriteError.html index aa30457c230..ad9c0cad503 100644 --- a/docs/Next/classes/WriteError.html +++ b/docs/Next/classes/WriteError.html @@ -1,5 +1,5 @@ WriteError | mongodb

    Class WriteError

    An error that occurred during a BulkWrite on the server.

    -

    Constructors

    Constructors

    Properties

    Accessors

    code errInfo @@ -8,9 +8,9 @@

    Methods

    Constructors

    Properties

    Accessors

    • get errmsg(): undefined | string
    • WriteError message.

      -

      Returns undefined | string

    Methods

    • Returns {
          code: number;
          errmsg?: string;
          index: number;
          op: Document;
      }

      • code: number
      • Optionalerrmsg?: string
      • index: number
      • op: Document
    +

    Constructors

    Properties

    Accessors

    • get errmsg(): undefined | string
    • WriteError message.

      +

      Returns undefined | string

    Methods

    • Returns {
          code: number;
          errmsg?: string;
          index: number;
          op: Document;
      }

      • code: number
      • Optionalerrmsg?: string
      • index: number
      • op: Document
    diff --git a/docs/Next/index.html b/docs/Next/index.html index 861d8dca011..69dbd993520 100644 --- a/docs/Next/index.html +++ b/docs/Next/index.html @@ -85,6 +85,7 @@

    For issues with, questions about, or feedback for the Node.js driver, please look into our support channels. Please do not email any of the driver developers directly with issues or questions - you're more likely to get an answer on the MongoDB Community Forums.

    Change history can be found in HISTORY.md.

    The driver currently supports 4.0+ servers.

    +

    ** 4.0 support is deprecated and support will be removed in an upcoming driver release. **

    For exhaustive server and runtime version compatibility matrices, please refer to the following links:

    If an internal MongoClient is created, it is configured with the same options as the parent MongoClient except minPoolSize is set to 0 and AutoEncryptionOptions is omitted.

    -
    autoSelectFamily?: boolean

    v18.13.0

    -
    autoSelectFamilyAttemptTimeout?: number

    v18.13.0

    -
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +
    autoSelectFamily?: boolean

    v18.13.0

    +
    autoSelectFamilyAttemptTimeout?: number

    v18.13.0

    +
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    false

    ca?: string | Buffer | (string | Buffer)[]

    Optionally override the trusted CA certificates. Default is to trust the well-known CAs curated by Mozilla. Mozilla's CAs are completely @@ -153,11 +154,11 @@ ciphers can be obtained via tls.getCiphers(). Cipher names must be uppercased in order for OpenSSL to accept them.

    compressors?: string | (
        | "none"
        | "snappy"
        | "zlib"
        | "zstd")[]

    An array or comma-delimited string of compressors to enable network compression for communication between this client and a mongod/mongos instance.

    -
    connectTimeoutMS?: number

    The time in milliseconds to attempt a connection before timing out.

    -
    crl?: string | Buffer | (string | Buffer)[]

    PEM formatted CRLs (Certificate Revocation Lists).

    +
    connectTimeoutMS?: number

    The time in milliseconds to attempt a connection before timing out.

    +
    crl?: string | Buffer | (string | Buffer)[]

    PEM formatted CRLs (Certificate Revocation Lists).

    directConnection?: boolean

    Allow a driver to force a Single topology type with a connection string containing one host

    -
    driverInfo?: DriverInfo

    Allows a wrapping driver to amend the client metadata generated by the driver to include information about the wrapping driver

    -
    ecdhCurve?: string

    A string describing a named curve or a colon separated list of curve +

    driverInfo?: DriverInfo

    Allows a wrapping driver to amend the client metadata generated by the driver to include information about the wrapping driver

    +
    ecdhCurve?: string

    A string describing a named curve or a colon separated list of curve NIDs or names, for example P-521:P-384:P-256, to use for ECDH key agreement. Set to auto to select the curve automatically. Use crypto.getCurves() to obtain a list of available curve names. On @@ -168,13 +169,14 @@

    family?: number
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    null

    forceServerObjectId?: boolean

    Force server to assign _id values instead of driver

    -
    heartbeatFrequencyMS?: number

    heartbeatFrequencyMS controls when the driver checks the state of the MongoDB deployment. Specify the interval (in milliseconds) between checks, counted from the end of the previous check until the beginning of the next one.

    -
    hints?: number
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +

    heartbeatFrequencyMS?: number

    heartbeatFrequencyMS controls when the driver checks the state of the MongoDB deployment. Specify the interval (in milliseconds) between checks, counted from the end of the previous check until the beginning of the next one.

    +
    hints?: number
    ignoreUndefined?: boolean

    serialize will not emit undefined fields note that the driver sets this to false

    true

    journal?: boolean

    The journal write concern

    Please use the writeConcern option instead

    -
    key?: string | Buffer | (string | Buffer | KeyObject)[]

    Private keys in PEM format. PEM allows the option of private keys +

    keepAliveInitialDelay?: number

    Node.JS socket option to set the time the first keepalive probe is sent on an idle socket. Defaults to 120000ms

    +
    key?: string | Buffer | (string | Buffer | KeyObject)[]

    Private keys in PEM format. PEM allows the option of private keys being encrypted. Encrypted keys will be decrypted with options.passphrase. Multiple keys using different algorithms can be provided either as an array of unencrypted key strings or buffers, @@ -183,20 +185,20 @@ object.passphrase is optional. Encrypted keys will be decrypted with object.passphrase if provided, or options.passphrase if it is not.

    loadBalanced?: boolean

    Instruct the driver it is connecting to a load balancer fronting a mongos like service

    -
    localAddress?: string
    localPort?: number
    localThresholdMS?: number

    The size (in milliseconds) of the latency window for selecting among multiple suitable MongoDB instances.

    -
    lookup?: LookupFunction
    maxConnecting?: number

    The maximum number of connections that may be in the process of being established concurrently by the connection pool.

    -
    maxIdleTimeMS?: number

    The maximum number of milliseconds that a connection can remain idle in the pool before being removed and closed.

    -
    maxPoolSize?: number

    The maximum number of connections in the connection pool.

    -
    maxStalenessSeconds?: number

    Specifies, in seconds, how stale a secondary can be before the client stops using it for read operations.

    -
    minDHSize?: number
    minHeartbeatFrequencyMS?: number

    Sets the minimum heartbeat frequency. In the event that the driver has to frequently re-check a server's availability, it will wait at least this long since the previous check to avoid wasted effort.

    -
    minPoolSize?: number

    The minimum number of connections in the connection pool.

    -
    mongodbLogComponentSeverities?: LogComponentSeveritiesClientOptions

    Enable logging level per component or use default to control any unset components.

    -
    mongodbLogMaxDocumentLength?: number

    All BSON documents are stringified to EJSON. This controls the maximum length of those strings. +

    localAddress?: string
    localPort?: number
    localThresholdMS?: number

    The size (in milliseconds) of the latency window for selecting among multiple suitable MongoDB instances.

    +
    lookup?: LookupFunction
    maxConnecting?: number

    The maximum number of connections that may be in the process of being established concurrently by the connection pool.

    +
    maxIdleTimeMS?: number

    The maximum number of milliseconds that a connection can remain idle in the pool before being removed and closed.

    +
    maxPoolSize?: number

    The maximum number of connections in the connection pool.

    +
    maxStalenessSeconds?: number

    Specifies, in seconds, how stale a secondary can be before the client stops using it for read operations.

    +
    minDHSize?: number
    minHeartbeatFrequencyMS?: number

    Sets the minimum heartbeat frequency. In the event that the driver has to frequently re-check a server's availability, it will wait at least this long since the previous check to avoid wasted effort.

    +
    minPoolSize?: number

    The minimum number of connections in the connection pool.

    +
    mongodbLogComponentSeverities?: LogComponentSeveritiesClientOptions

    Enable logging level per component or use default to control any unset components.

    +
    mongodbLogMaxDocumentLength?: number

    All BSON documents are stringified to EJSON. This controls the maximum length of those strings. It is defaulted to 1000.

    -
    mongodbLogPath?: MongoDBLogWritable | "stdout" | "stderr"

    Specifies the destination of the driver's logging. The default is stderr.

    -
    monitorCommands?: boolean

    Enable command monitoring for this client

    -
    noDelay?: boolean

    TCP Connection no delay

    -
    passphrase?: string

    Shared passphrase used for a single private key and/or a PFX.

    +
    mongodbLogPath?: MongoDBLogWritable | "stdout" | "stderr"

    Specifies the destination of the driver's logging. The default is stderr.

    +
    monitorCommands?: boolean

    Enable command monitoring for this client

    +
    noDelay?: boolean

    TCP Connection no delay

    +
    passphrase?: string

    Shared passphrase used for a single private key and/or a PFX.

    pfx?: string | Buffer | (string | Buffer | PxfObject)[]

    PFX or PKCS12 encoded private key and certificate chain. pfx is an alternative to providing key and cert individually. PFX is usually encrypted, if it is, passphrase will be used to decrypt it. Multiple @@ -206,17 +208,17 @@ object.passphrase is optional. Encrypted PFX will be decrypted with object.passphrase if provided, or options.passphrase if it is not.

    pkFactory?: PkFactory

    A primary key factory function for generation of custom _id keys

    -
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    false

    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    true

    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    true

    proxyHost?: string

    Configures a Socks5 proxy host used for creating TCP connections.

    -
    proxyPassword?: string

    Configures a Socks5 proxy password when the proxy in proxyHost requires username/password authentication.

    -
    proxyPort?: number

    Configures a Socks5 proxy port used for creating TCP connections.

    -
    proxyUsername?: string

    Configures a Socks5 proxy username when the proxy in proxyHost requires username/password authentication.

    -
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +

    proxyPassword?: string

    Configures a Socks5 proxy password when the proxy in proxyHost requires username/password authentication.

    +
    proxyPort?: number

    Configures a Socks5 proxy port used for creating TCP connections.

    +
    proxyUsername?: string

    Configures a Socks5 proxy username when the proxy in proxyHost requires username/password authentication.

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer which is allocated using allocUnsafe API. See this section from the Node.js Docs here for more detail about what "unsafe" refers to in this context. @@ -228,19 +230,19 @@

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    readConcern?: ReadConcernLike

    Specify a read concern for the collection (only MongoDB 3.2 or higher supported)

    -
    readConcernLevel?: ReadConcernLevel

    The level of isolation

    -

    Specifies the read preferences for this connection

    -
    readPreferenceTags?: TagSet[]

    Specifies the tags document as a comma-separated list of colon-separated key-value pairs.

    -
    rejectUnauthorized?: boolean

    If true the server will reject any connection which is not +

    readConcernLevel?: ReadConcernLevel

    The level of isolation

    +

    Specifies the read preferences for this connection

    +
    readPreferenceTags?: TagSet[]

    Specifies the tags document as a comma-separated list of colon-separated key-value pairs.

    +
    rejectUnauthorized?: boolean

    If true the server will reject any connection which is not authorized with the list of supplied CAs. This option only has an effect if requestCert is true.

    true
     
    replicaSet?: string

    Specifies the name of the replica set, if the mongod is a member of a replica set.

    -
    retryReads?: boolean

    Enables retryable reads.

    -
    retryWrites?: boolean

    Enable retryable writes.

    -
    secureContext?: SecureContext

    An optional TLS context object from tls.createSecureContext()

    +
    retryReads?: boolean

    Enables retryable reads.

    +
    retryWrites?: boolean

    Enable retryable writes.

    +
    secureContext?: SecureContext

    An optional TLS context object from tls.createSecureContext()

    secureProtocol?: string

    Legacy mechanism to select the TLS protocol version to use, it does not support independent control of the minimum and maximum version, and does not support limiting the protocol to TLSv1.3. Use @@ -253,33 +255,33 @@

    serializeFunctions?: boolean

    serialize the javascript functions

    false

    serverApi?: "1" | ServerApi

    Server API version

    -
    serverMonitoringMode?: ServerMonitoringMode

    Instructs the driver monitors to use a specific monitoring mode

    -
    servername?: string
    serverSelectionTimeoutMS?: number

    Specifies how long (in milliseconds) to block for server selection before throwing an exception.

    -
    session?: Buffer

    An optional Buffer instance containing a TLS session.

    +
    serverMonitoringMode?: ServerMonitoringMode

    Instructs the driver monitors to use a specific monitoring mode

    +
    servername?: string
    serverSelectionTimeoutMS?: number

    Specifies how long (in milliseconds) to block for server selection before throwing an exception.

    +
    session?: Buffer

    An optional Buffer instance containing a TLS session.

    socketTimeoutMS?: number

    The time in milliseconds to attempt a send or receive on a socket before the attempt times out.

    -
    srvMaxHosts?: number

    The maximum number of hosts to connect to when using an srv connection string, a setting of 0 means unlimited hosts

    -
    srvServiceName?: string

    Modifies the srv URI to look like:

    +
    srvMaxHosts?: number

    The maximum number of hosts to connect to when using an srv connection string, a setting of 0 means unlimited hosts

    +
    srvServiceName?: string

    Modifies the srv URI to look like:

    _{srvServiceName}._tcp.{hostname}.{domainname}

    Querying this DNS URI is expected to respond with SRV records

    -
    ssl?: boolean

    A boolean to enable or disables TLS/SSL for the connection. (The ssl option is equivalent to the tls option.)

    -
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    -
    tls?: boolean

    Enables or disables TLS/SSL for the connection.

    -
    tlsAllowInvalidCertificates?: boolean

    Bypasses validation of the certificates presented by the mongod/mongos instance

    -
    tlsAllowInvalidHostnames?: boolean

    Disables hostname validation of the certificate presented by the mongod/mongos instance.

    -
    tlsCAFile?: string

    Specifies the location of a local .pem file that contains the root certificate chain from the Certificate Authority. This file is used to validate the certificate presented by the mongod/mongos instance.

    -
    tlsCertificateKeyFile?: string

    Specifies the location of a local .pem file that contains either the client's TLS/SSL certificate and key.

    -
    tlsCertificateKeyFilePassword?: string

    Specifies the password to de-crypt the tlsCertificateKeyFile.

    -
    tlsCRLFile?: string

    Specifies the location of a local CRL .pem file that contains the client revokation list.

    -
    tlsInsecure?: boolean

    Disables various certificate validations.

    -
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +
    ssl?: boolean

    A boolean to enable or disables TLS/SSL for the connection. (The ssl option is equivalent to the tls option.)

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    tls?: boolean

    Enables or disables TLS/SSL for the connection.

    +
    tlsAllowInvalidCertificates?: boolean

    Bypasses validation of the certificates presented by the mongod/mongos instance

    +
    tlsAllowInvalidHostnames?: boolean

    Disables hostname validation of the certificate presented by the mongod/mongos instance.

    +
    tlsCAFile?: string

    Specifies the location of a local .pem file that contains the root certificate chain from the Certificate Authority. This file is used to validate the certificate presented by the mongod/mongos instance.

    +
    tlsCertificateKeyFile?: string

    Specifies the location of a local .pem file that contains either the client's TLS/SSL certificate and key.

    +
    tlsCertificateKeyFilePassword?: string

    Specifies the password to de-crypt the tlsCertificateKeyFile.

    +
    tlsCRLFile?: string

    Specifies the location of a local CRL .pem file that contains the client revokation list.

    +
    tlsInsecure?: boolean

    Disables various certificate validations.

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    false

    w?: W

    The write concern w value

    Please use the writeConcern option instead

    -
    waitQueueTimeoutMS?: number

    The maximum time in milliseconds that a thread can wait for a connection to become available.

    -

    A MongoDB WriteConcern, which describes the level of acknowledgement +

    waitQueueTimeoutMS?: number

    The maximum time in milliseconds that a thread can wait for a connection to become available.

    +

    A MongoDB WriteConcern, which describes the level of acknowledgement requested from MongoDB for write operations.

    wtimeoutMS?: number

    The write concern timeout

    +
    wtimeoutMS?: number

    The write concern timeout

    Please use the writeConcern option instead

    -
    zlibCompressionLevel?:
        | 0
        | 5
        | 1
        | 3
        | 9
        | 4
        | 2
        | 7
        | 6
        | 8

    An integer that specifies the compression level if using zlib for network compression.

    -
    +
    zlibCompressionLevel?:
        | 0
        | 5
        | 1
        | 3
        | 9
        | 4
        | 2
        | 8
        | 7
        | 6

    An integer that specifies the compression level if using zlib for network compression.

    +
    diff --git a/docs/Next/interfaces/MongoNetworkErrorOptions.html b/docs/Next/interfaces/MongoNetworkErrorOptions.html index 611b3bc11d2..7373abfc252 100644 --- a/docs/Next/interfaces/MongoNetworkErrorOptions.html +++ b/docs/Next/interfaces/MongoNetworkErrorOptions.html @@ -1,4 +1,4 @@ -MongoNetworkErrorOptions | mongodb

    Interface MongoNetworkErrorOptions

    interface MongoNetworkErrorOptions {
        beforeHandshake?: boolean;
        cause?: Error;
    }

    Properties

    beforeHandshake? +MongoNetworkErrorOptions | mongodb

    Interface MongoNetworkErrorOptions

    interface MongoNetworkErrorOptions {
        beforeHandshake?: boolean;
        cause?: Error;
    }

    Properties

    beforeHandshake?: boolean

    Indicates the timeout happened before a connection handshake completed

    -
    cause?: Error
    +
    cause?: Error
    diff --git a/docs/Next/interfaces/MongoOptions.html b/docs/Next/interfaces/MongoOptions.html index fce91f4629c..82c5b3ee108 100644 --- a/docs/Next/interfaces/MongoOptions.html +++ b/docs/Next/interfaces/MongoOptions.html @@ -11,7 +11,7 @@
  • DNS SRV records and TXT records
  • Not all options may be present after client construction as some are obtained from asynchronous operations.

    -
    interface MongoOptions {
        allowPartialTrustChain?: boolean;
        ALPNProtocols?: Uint8Array | string[] | Uint8Array[];
        appName?: string;
        autoEncryption: AutoEncryptionOptions;
        autoSelectFamily?: boolean;
        autoSelectFamilyAttemptTimeout?: number;
        ca?: string | Buffer | (string | Buffer)[];
        cert?: string | Buffer | (string | Buffer)[];
        checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined);
        ciphers?: string;
        compressors: (
            | "none"
            | "snappy"
            | "zlib"
            | "zstd")[];
        connectTimeoutMS: number;
        credentials?: MongoCredentials;
        crl?: string | Buffer | (string | Buffer)[];
        dbName: string;
        directConnection: boolean;
        driverInfo: DriverInfo;
        ecdhCurve?: string;
        family?: number;
        forceServerObjectId: boolean;
        heartbeatFrequencyMS: number;
        hints?: number;
        hosts: HostAddress[];
        key?: string | Buffer | (string | Buffer | KeyObject)[];
        loadBalanced: boolean;
        localAddress?: string;
        localPort?: number;
        localThresholdMS: number;
        lookup?: LookupFunction;
        maxConnecting: number;
        maxIdleTimeMS: number;
        maxPoolSize: number;
        metadata: ClientMetadata;
        minDHSize?: number;
        minHeartbeatFrequencyMS: number;
        minPoolSize: number;
        monitorCommands: boolean;
        noDelay: boolean;
        passphrase?: string;
        pfx?: string | Buffer | (string | Buffer | PxfObject)[];
        pkFactory: PkFactory;
        proxyHost?: string;
        proxyPassword?: string;
        proxyPort?: number;
        proxyUsername?: string;
        raw: boolean;
        readConcern: ReadConcern;
        readPreference: ReadPreference;
        rejectUnauthorized?: boolean;
        replicaSet: string;
        retryReads: boolean;
        retryWrites: boolean;
        secureContext?: SecureContext;
        secureProtocol?: string;
        serverApi: ServerApi;
        serverMonitoringMode: ServerMonitoringMode;
        servername?: string;
        serverSelectionTimeoutMS: number;
        session?: Buffer;
        socketTimeoutMS: number;
        srvHost?: string;
        srvMaxHosts: number;
        srvServiceName: string;
        timeoutMS?: number;
        tls: boolean;
        tlsAllowInvalidCertificates: boolean;
        tlsAllowInvalidHostnames: boolean;
        tlsCAFile?: string;
        tlsCertificateKeyFile?: string;
        tlsCRLFile?: string;
        tlsInsecure: boolean;
        waitQueueTimeoutMS: number;
        writeConcern: WriteConcern;
        zlibCompressionLevel:
            | 0
            | 1
            | 2
            | 3
            | 4
            | 5
            | 6
            | 7
            | 8
            | 9;
    }

    Hierarchy (view full)

    • Required<Pick<MongoClientOptions,
          | "autoEncryption"
          | "connectTimeoutMS"
          | "directConnection"
          | "driverInfo"
          | "forceServerObjectId"
          | "minHeartbeatFrequencyMS"
          | "heartbeatFrequencyMS"
          | "localThresholdMS"
          | "maxConnecting"
          | "maxIdleTimeMS"
          | "maxPoolSize"
          | "minPoolSize"
          | "monitorCommands"
          | "noDelay"
          | "pkFactory"
          | "raw"
          | "replicaSet"
          | "retryReads"
          | "retryWrites"
          | "serverSelectionTimeoutMS"
          | "socketTimeoutMS"
          | "srvMaxHosts"
          | "srvServiceName"
          | "tlsAllowInvalidCertificates"
          | "tlsAllowInvalidHostnames"
          | "tlsInsecure"
          | "waitQueueTimeoutMS"
          | "zlibCompressionLevel">>
    • SupportedNodeConnectionOptions
      • MongoOptions

    Properties

    interface MongoOptions {
        allowPartialTrustChain?: boolean;
        ALPNProtocols?: Uint8Array | string[] | Uint8Array[];
        appName?: string;
        autoEncryption: AutoEncryptionOptions;
        autoSelectFamily?: boolean;
        autoSelectFamilyAttemptTimeout?: number;
        ca?: string | Buffer | (string | Buffer)[];
        cert?: string | Buffer | (string | Buffer)[];
        checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined);
        ciphers?: string;
        compressors: (
            | "none"
            | "snappy"
            | "zlib"
            | "zstd")[];
        connectTimeoutMS: number;
        credentials?: MongoCredentials;
        crl?: string | Buffer | (string | Buffer)[];
        dbName: string;
        directConnection: boolean;
        driverInfo: DriverInfo;
        ecdhCurve?: string;
        family?: number;
        forceServerObjectId: boolean;
        heartbeatFrequencyMS: number;
        hints?: number;
        hosts: HostAddress[];
        keepAliveInitialDelay?: number;
        key?: string | Buffer | (string | Buffer | KeyObject)[];
        loadBalanced: boolean;
        localAddress?: string;
        localPort?: number;
        localThresholdMS: number;
        lookup?: LookupFunction;
        maxConnecting: number;
        maxIdleTimeMS: number;
        maxPoolSize: number;
        metadata: ClientMetadata;
        minDHSize?: number;
        minHeartbeatFrequencyMS: number;
        minPoolSize: number;
        monitorCommands: boolean;
        noDelay: boolean;
        passphrase?: string;
        pfx?: string | Buffer | (string | Buffer | PxfObject)[];
        pkFactory: PkFactory;
        proxyHost?: string;
        proxyPassword?: string;
        proxyPort?: number;
        proxyUsername?: string;
        raw: boolean;
        readConcern: ReadConcern;
        readPreference: ReadPreference;
        rejectUnauthorized?: boolean;
        replicaSet: string;
        retryReads: boolean;
        retryWrites: boolean;
        secureContext?: SecureContext;
        secureProtocol?: string;
        serverApi: ServerApi;
        serverMonitoringMode: ServerMonitoringMode;
        servername?: string;
        serverSelectionTimeoutMS: number;
        session?: Buffer;
        socketTimeoutMS: number;
        srvHost?: string;
        srvMaxHosts: number;
        srvServiceName: string;
        timeoutMS?: number;
        tls: boolean;
        tlsAllowInvalidCertificates: boolean;
        tlsAllowInvalidHostnames: boolean;
        tlsCAFile?: string;
        tlsCertificateKeyFile?: string;
        tlsCRLFile?: string;
        tlsInsecure: boolean;
        waitQueueTimeoutMS: number;
        writeConcern: WriteConcern;
        zlibCompressionLevel:
            | 0
            | 1
            | 2
            | 3
            | 4
            | 5
            | 6
            | 7
            | 8
            | 9;
    }

    Hierarchy (view full)

    • Required<Pick<MongoClientOptions,
          | "autoEncryption"
          | "connectTimeoutMS"
          | "directConnection"
          | "driverInfo"
          | "forceServerObjectId"
          | "minHeartbeatFrequencyMS"
          | "heartbeatFrequencyMS"
          | "localThresholdMS"
          | "maxConnecting"
          | "maxIdleTimeMS"
          | "maxPoolSize"
          | "minPoolSize"
          | "monitorCommands"
          | "noDelay"
          | "pkFactory"
          | "raw"
          | "replicaSet"
          | "retryReads"
          | "retryWrites"
          | "serverSelectionTimeoutMS"
          | "socketTimeoutMS"
          | "srvMaxHosts"
          | "srvServiceName"
          | "tlsAllowInvalidCertificates"
          | "tlsAllowInvalidHostnames"
          | "tlsInsecure"
          | "waitQueueTimeoutMS"
          | "zlibCompressionLevel">>
    • SupportedNodeConnectionOptions
      • MongoOptions

    Properties

    v22.9.0, v20.18.0

    ALPNProtocols?: Uint8Array | string[] | Uint8Array[]

    An array of strings or a Buffer naming possible ALPN protocols. (Protocols should be ordered by their priority.)

    -
    appName?: string
    autoEncryption: AutoEncryptionOptions

    Optionally enable in-use auto encryption

    +
    appName?: string
    autoEncryption: AutoEncryptionOptions

    Optionally enable in-use auto encryption

    Automatic encryption is an enterprise only feature that only applies to operations on a collection. Automatic encryption is not supported for operations on a database or view, and operations that are not bypassed will result in error (see libmongocrypt: Auto Encryption Allow-List). To bypass automatic encryption for all operations, set bypassAutoEncryption=true in AutoEncryptionOpts.

    Automatic encryption requires the authenticated user to have the listCollections privilege action.

    @@ -100,9 +101,9 @@
  • AutoEncryptionOptions.bypassAutomaticEncryption is false.
  • If an internal MongoClient is created, it is configured with the same options as the parent MongoClient except minPoolSize is set to 0 and AutoEncryptionOptions is omitted.

    -
    autoSelectFamily?: boolean

    v18.13.0

    -
    autoSelectFamilyAttemptTimeout?: number

    v18.13.0

    -
    ca?: string | Buffer | (string | Buffer)[]

    Optionally override the trusted CA certificates. Default is to trust +

    autoSelectFamily?: boolean

    v18.13.0

    +
    autoSelectFamilyAttemptTimeout?: number

    v18.13.0

    +
    ca?: string | Buffer | (string | Buffer)[]

    Optionally override the trusted CA certificates. Default is to trust the well-known CAs curated by Mozilla. Mozilla's CAs are completely replaced when CAs are explicitly specified using this option.

    cert?: string | Buffer | (string | Buffer)[]

    Cert chains in PEM format. One cert chain should be provided per @@ -134,11 +135,11 @@ information, see modifying the default cipher suite. Permitted ciphers can be obtained via tls.getCiphers(). Cipher names must be uppercased in order for OpenSSL to accept them.

    -
    compressors: (
        | "none"
        | "snappy"
        | "zlib"
        | "zstd")[]
    connectTimeoutMS: number

    The time in milliseconds to attempt a connection before timing out.

    -
    credentials?: MongoCredentials
    crl?: string | Buffer | (string | Buffer)[]

    PEM formatted CRLs (Certificate Revocation Lists).

    -
    dbName: string
    directConnection: boolean

    Allow a driver to force a Single topology type with a connection string containing one host

    -
    driverInfo: DriverInfo

    Allows a wrapping driver to amend the client metadata generated by the driver to include information about the wrapping driver

    -
    ecdhCurve?: string

    A string describing a named curve or a colon separated list of curve +

    compressors: (
        | "none"
        | "snappy"
        | "zlib"
        | "zstd")[]
    connectTimeoutMS: number

    The time in milliseconds to attempt a connection before timing out.

    +
    credentials?: MongoCredentials
    crl?: string | Buffer | (string | Buffer)[]

    PEM formatted CRLs (Certificate Revocation Lists).

    +
    dbName: string
    directConnection: boolean

    Allow a driver to force a Single topology type with a connection string containing one host

    +
    driverInfo: DriverInfo

    Allows a wrapping driver to amend the client metadata generated by the driver to include information about the wrapping driver

    +
    ecdhCurve?: string

    A string describing a named curve or a colon separated list of curve NIDs or names, for example P-521:P-384:P-256, to use for ECDH key agreement. Set to auto to select the curve automatically. Use crypto.getCurves() to obtain a list of available curve names. On @@ -146,8 +147,9 @@ name and description of each available elliptic curve. Default: tls.DEFAULT_ECDH_CURVE.

    family?: number
    forceServerObjectId: boolean

    Force server to assign _id values instead of driver

    -
    heartbeatFrequencyMS: number

    heartbeatFrequencyMS controls when the driver checks the state of the MongoDB deployment. Specify the interval (in milliseconds) between checks, counted from the end of the previous check until the beginning of the next one.

    -
    hints?: number
    hosts: HostAddress[]
    key?: string | Buffer | (string | Buffer | KeyObject)[]

    Private keys in PEM format. PEM allows the option of private keys +

    heartbeatFrequencyMS: number

    heartbeatFrequencyMS controls when the driver checks the state of the MongoDB deployment. Specify the interval (in milliseconds) between checks, counted from the end of the previous check until the beginning of the next one.

    +
    hints?: number
    hosts: HostAddress[]
    keepAliveInitialDelay?: number

    Node.JS socket option to set the time the first keepalive probe is sent on an idle socket. Defaults to 120000ms

    +
    key?: string | Buffer | (string | Buffer | KeyObject)[]

    Private keys in PEM format. PEM allows the option of private keys being encrypted. Encrypted keys will be decrypted with options.passphrase. Multiple keys using different algorithms can be provided either as an array of unencrypted key strings or buffers, @@ -155,15 +157,15 @@ passphrase: ]}. The object form can only occur in an array. object.passphrase is optional. Encrypted keys will be decrypted with object.passphrase if provided, or options.passphrase if it is not.

    -
    loadBalanced: boolean
    localAddress?: string
    localPort?: number
    localThresholdMS: number

    The size (in milliseconds) of the latency window for selecting among multiple suitable MongoDB instances.

    -
    lookup?: LookupFunction
    maxConnecting: number

    The maximum number of connections that may be in the process of being established concurrently by the connection pool.

    -
    maxIdleTimeMS: number

    The maximum number of milliseconds that a connection can remain idle in the pool before being removed and closed.

    -
    maxPoolSize: number

    The maximum number of connections in the connection pool.

    -
    metadata: ClientMetadata
    minDHSize?: number
    minHeartbeatFrequencyMS: number

    Sets the minimum heartbeat frequency. In the event that the driver has to frequently re-check a server's availability, it will wait at least this long since the previous check to avoid wasted effort.

    -
    minPoolSize: number

    The minimum number of connections in the connection pool.

    -
    monitorCommands: boolean

    Enable command monitoring for this client

    -
    noDelay: boolean

    TCP Connection no delay

    -
    passphrase?: string

    Shared passphrase used for a single private key and/or a PFX.

    +
    loadBalanced: boolean
    localAddress?: string
    localPort?: number
    localThresholdMS: number

    The size (in milliseconds) of the latency window for selecting among multiple suitable MongoDB instances.

    +
    lookup?: LookupFunction
    maxConnecting: number

    The maximum number of connections that may be in the process of being established concurrently by the connection pool.

    +
    maxIdleTimeMS: number

    The maximum number of milliseconds that a connection can remain idle in the pool before being removed and closed.

    +
    maxPoolSize: number

    The maximum number of connections in the connection pool.

    +
    metadata: ClientMetadata
    minDHSize?: number
    minHeartbeatFrequencyMS: number

    Sets the minimum heartbeat frequency. In the event that the driver has to frequently re-check a server's availability, it will wait at least this long since the previous check to avoid wasted effort.

    +
    minPoolSize: number

    The minimum number of connections in the connection pool.

    +
    monitorCommands: boolean

    Enable command monitoring for this client

    +
    noDelay: boolean

    TCP Connection no delay

    +
    passphrase?: string

    Shared passphrase used for a single private key and/or a PFX.

    pfx?: string | Buffer | (string | Buffer | PxfObject)[]

    PFX or PKCS12 encoded private key and certificate chain. pfx is an alternative to providing key and cert individually. PFX is usually encrypted, if it is, passphrase will be used to decrypt it. Multiple @@ -173,7 +175,7 @@ object.passphrase is optional. Encrypted PFX will be decrypted with object.passphrase if provided, or options.passphrase if it is not.

    pkFactory: PkFactory

    A primary key factory function for generation of custom _id keys

    -
    proxyHost?: string
    proxyPassword?: string
    proxyPort?: number
    proxyUsername?: string
    raw: boolean

    Enabling the raw option will return a Node.js Buffer +

    proxyHost?: string
    proxyPassword?: string
    proxyPort?: number
    proxyUsername?: string
    raw: boolean

    Enabling the raw option will return a Node.js Buffer which is allocated using allocUnsafe API. See this section from the Node.js Docs here for more detail about what "unsafe" refers to in this context. @@ -184,16 +186,16 @@

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    -
    readConcern: ReadConcern
    readPreference: ReadPreference
    rejectUnauthorized?: boolean

    If true the server will reject any connection which is not +

    readConcern: ReadConcern
    readPreference: ReadPreference
    rejectUnauthorized?: boolean

    If true the server will reject any connection which is not authorized with the list of supplied CAs. This option only has an effect if requestCert is true.

    true
     
    replicaSet: string

    Specifies the name of the replica set, if the mongod is a member of a replica set.

    -
    retryReads: boolean

    Enables retryable reads.

    -
    retryWrites: boolean

    Enable retryable writes.

    -
    secureContext?: SecureContext

    An optional TLS context object from tls.createSecureContext()

    +
    retryReads: boolean

    Enables retryable reads.

    +
    retryWrites: boolean

    Enable retryable writes.

    +
    secureContext?: SecureContext

    An optional TLS context object from tls.createSecureContext()

    secureProtocol?: string

    Legacy mechanism to select the TLS protocol version to use, it does not support independent control of the minimum and maximum version, and does not support limiting the protocol to TLSv1.3. Use @@ -203,14 +205,14 @@

    serverApi: ServerApi
    serverMonitoringMode: ServerMonitoringMode
    servername?: string
    serverSelectionTimeoutMS: number

    Specifies how long (in milliseconds) to block for server selection before throwing an exception.

    -
    session?: Buffer

    An optional Buffer instance containing a TLS session.

    +
    serverApi: ServerApi
    serverMonitoringMode: ServerMonitoringMode
    servername?: string
    serverSelectionTimeoutMS: number

    Specifies how long (in milliseconds) to block for server selection before throwing an exception.

    +
    session?: Buffer

    An optional Buffer instance containing a TLS session.

    socketTimeoutMS: number

    The time in milliseconds to attempt a send or receive on a socket before the attempt times out.

    -
    srvHost?: string
    srvMaxHosts: number

    The maximum number of hosts to connect to when using an srv connection string, a setting of 0 means unlimited hosts

    -
    srvServiceName: string

    Modifies the srv URI to look like:

    +
    srvHost?: string
    srvMaxHosts: number

    The maximum number of hosts to connect to when using an srv connection string, a setting of 0 means unlimited hosts

    +
    srvServiceName: string

    Modifies the srv URI to look like:

    _{srvServiceName}._tcp.{hostname}.{domainname}

    Querying this DNS URI is expected to respond with SRV records

    -
    timeoutMS?: number
    tls: boolean

    NOTE ABOUT TLS Options

    If tls is provided as an option, it is equivalent to setting the ssl option.

    +
    timeoutMS?: number
    tls: boolean

    NOTE ABOUT TLS Options

    If tls is provided as an option, it is equivalent to setting the ssl option.

    NodeJS native TLS options are passed through to the socket and retain their original types.

    @@ -273,9 +275,9 @@
    + + + + + + + + + + + + + + + + + + + + +
    OperatorReplacement
    $where$expr
    $near$geoWithin with $center
    $nearSphere$geoWithin with $centerSphere
    +

    Parameters

    Returns Promise<number>

    • Creates an index on the db and collection collection.

      +

      Parameters

      Returns Promise<string>

      const collection = client.db('foo').collection('bar');

      await collection.createIndex({ a: 1, b: -1 });

      // Alternate syntax for { c: 1, d: -1 } that ensures order of indexes
      await collection.createIndex([ [c, 1], [d, -1] ]);

      // Equivalent to { e: 1 }
      await collection.createIndex('e');

      // Equivalent to { f: 1, g: 1 }
      await collection.createIndex(['f', 'g'])

      // Equivalent to { h: 1, i: -1 }
      await collection.createIndex([ { h: 1 }, { i: -1 } ]);

      // Equivalent to { j: 1, k: -1, l: 2d }
      await collection.createIndex(['j', ['k', -1], { l: '2d' }]) +
      + +
    • Creates multiple indexes in the collection, this method is only supported for +MongoDB 2.6 or higher. Earlier version of MongoDB will throw a command not supported +error.

      +

      Note: Unlike Collection#createIndex| createIndex, this function takes in raw index specifications. +Index specifications are defined here.

      +

      Parameters

      Returns Promise<string[]>

      const collection = client.db('foo').collection('bar');
      await collection.createIndexes([
      // Simple index on field fizz
      {
      key: { fizz: 1 },
      }
      // wildcard index
      {
      key: { '$**': 1 }
      },
      // named index on darmok and jalad
      {
      key: { darmok: 1, jalad: -1 }
      name: 'tanagra'
      }
      ]); +
      + +
    • Creates a single search index for the collection.

      +

      Parameters

      Returns Promise<string>

      A promise that resolves to the name of the new search index.

      +

      Only available when used against a 7.0+ Atlas cluster.

      +
    • Creates multiple search indexes for the current collection.

      +

      Parameters

      Returns Promise<string[]>

      A promise that resolves to an array of the newly created search index names.

      +

      Only available when used against a 7.0+ Atlas cluster.

      +
    • Drop the collection from the database, removing it permanently. New accesses will create a new collection.

      +

      Parameters

      Returns Promise<boolean>

    • Drops all indexes from this collection.

      +

      Parameters

      Returns Promise<boolean>

    • Deletes a search index by index name.

      +

      Parameters

      • name: string

        The name of the search index to be deleted.

        +

      Returns Promise<void>

      Only available when used against a 7.0+ Atlas cluster.

      +
    • Gets an estimate of the count of documents in a collection using collection metadata. +This will always run a count command on all server versions.

      +

      due to an oversight in versions 5.0.0-5.0.8 of MongoDB, the count command, +which estimatedDocumentCount uses in its implementation, was not included in v1 of +the Stable API, and so users of the Stable API with estimatedDocumentCount are +recommended to upgrade their server version to 5.0.9+ or set apiStrict: false to avoid +encountering errors.

      +

      Parameters

      Returns Promise<number>

    • Checks if one or more indexes exist on the collection, fails on first non-existing index

      +

      Parameters

      • indexes: string | string[]

        One or more index names to check.

        +
      • Optionaloptions: ListIndexesOptions

        Optional settings for the command

        +

      Returns Promise<boolean>

    • Initiate an In order bulk write operation. Operations will be serially executed in the order they are added, creating a new operation for each switch in types.

      +

      Parameters

      Returns OrderedBulkOperation

      MongoNotConnectedError

      +

      NOTE: MongoClient must be connected prior to calling this method due to a known limitation in this legacy implementation. +However, collection.bulkWrite() provides an equivalent API that does not require prior connecting.

      +
    • Initiate an Out of order batch write operation. All operations will be buffered into insert/update/remove commands executed out of order.

      +

      Parameters

      Returns UnorderedBulkOperation

      MongoNotConnectedError

      +

      NOTE: MongoClient must be connected prior to calling this method due to a known limitation in this legacy implementation. +However, collection.bulkWrite() provides an equivalent API that does not require prior connecting.

      +
    • Returns if the collection is a capped collection

      +

      Parameters

      Returns Promise<boolean>

    • Updates a search index by replacing the existing index definition with the provided definition.

      +

      Parameters

      • name: string

        The name of the search index to update.

        +
      • definition: Document

        The new search index definition.

        +

      Returns Promise<void>

      Only available when used against a 7.0+ Atlas cluster.

      +
    • Create a new Change Stream, watching for new changes (insertions, updates, replacements, deletions, and invalidations) in this collection.

      +

      Type Parameters

      Parameters

      • pipeline: Document[] = []

        An array of pipeline stages through which to pass change stream documents. This allows for filtering (using $match) and manipulating the change stream documents.

        +
      • options: ChangeStreamOptions = {}

        Optional settings for the command

        +

      Returns ChangeStream<TLocal, TChange>

      watch() accepts two generic arguments for distinct use cases:

      +
        +
      • The first is to override the schema that may be defined for this specific collection
      • +
      • The second is to override the shape of the change stream document entirely, if it is not provided the type will default to ChangeStreamDocument of the first argument
      • +
      +

      By just providing the first argument I can type the change to be ChangeStreamDocument<{ _id: number }>

      +
      collection.watch<{ _id: number }>()
      .on('change', change => console.log(change._id.toFixed(4))); +
      + +

      Passing a second argument provides a way to reflect the type changes caused by an advanced pipeline. +Here, we are using a pipeline to have MongoDB filter for insert changes only and add a comment. +No need start from scratch on the ChangeStreamInsertDocument type! +By using an intersection we can save time and ensure defaults remain the same type!

      +
      collection
      .watch<Schema, ChangeStreamInsertDocument<Schema> & { comment: string }>([
      { $addFields: { comment: 'big changes' } },
      { $match: { operationType: 'insert' } }
      ])
      .on('change', change => {
      change.comment.startsWith('big');
      change.operationType === 'insert';
      // No need to narrow in code because the generics did that for us!
      expectType<Schema>(change.fullDocument);
      }); +
      + +

      In iterator mode, if a next() call throws a timeout error, it will attempt to resume the change stream. +The next call can just be retried after this succeeds.

      +
      const changeStream = collection.watch([], { timeoutMS: 100 });
      try {
      await changeStream.next();
      } catch (e) {
      if (e instanceof MongoOperationTimeoutError && !changeStream.closed) {
      await changeStream.next();
      }
      throw e;
      } +
      + +

      In emitter mode, if the change stream goes timeoutMS without emitting a change event, it will +emit an error event that returns a MongoOperationTimeoutError, but will not close the change +stream unless the resume attempt fails. There is no need to re-establish change listeners as +this will automatically continue emitting change events once the resume attempt completes.

      +
      const changeStream = collection.watch([], { timeoutMS: 100 });
      changeStream.on('change', console.log);
      changeStream.on('error', e => {
      if (e instanceof MongoOperationTimeoutError && !changeStream.closed) {
      // do nothing
      } else {
      changeStream.close();
      }
      }); +
      + +
    diff --git a/docs/6.16/classes/CommandFailedEvent.html b/docs/6.16/classes/CommandFailedEvent.html new file mode 100644 index 00000000000..bdb63903f75 --- /dev/null +++ b/docs/6.16/classes/CommandFailedEvent.html @@ -0,0 +1,14 @@ +CommandFailedEvent | mongodb

    Class CommandFailedEvent

    An event indicating the failure of a given command

    +

    Properties

    address: string
    commandName: string
    connectionId?: string | number

    Driver generated connection id

    +
    duration: number
    failure: Error
    requestId: number
    serverConnectionId: null | bigint

    Server generated connection id +Distinct from the connection id and is returned by the hello or legacy hello response as "connectionId" from the server on 4.2+.

    +
    serviceId?: ObjectId

    Accessors

    diff --git a/docs/6.16/classes/CommandStartedEvent.html b/docs/6.16/classes/CommandStartedEvent.html new file mode 100644 index 00000000000..268d7c3e247 --- /dev/null +++ b/docs/6.16/classes/CommandStartedEvent.html @@ -0,0 +1,16 @@ +CommandStartedEvent | mongodb

    Class CommandStartedEvent

    An event indicating the start of a given command

    +

    Properties

    address: string
    command: Document
    commandName: string
    commandObj?: Document
    connectionId?: string | number

    Driver generated connection id

    +
    databaseName: string
    requestId: number
    serverConnectionId: null | bigint

    Server generated connection id +Distinct from the connection id and is returned by the hello or legacy hello response as "connectionId" +from the server on 4.2+.

    +
    serviceId?: ObjectId

    Accessors

    diff --git a/docs/6.16/classes/CommandSucceededEvent.html b/docs/6.16/classes/CommandSucceededEvent.html new file mode 100644 index 00000000000..dc39d6f34ad --- /dev/null +++ b/docs/6.16/classes/CommandSucceededEvent.html @@ -0,0 +1,14 @@ +CommandSucceededEvent | mongodb

    Class CommandSucceededEvent

    An event indicating the success of a given command

    +

    Properties

    address: string
    commandName: string
    connectionId?: string | number

    Driver generated connection id

    +
    duration: number
    reply: unknown
    requestId: number
    serverConnectionId: null | bigint

    Server generated connection id +Distinct from the connection id and is returned by the hello or legacy hello response as "connectionId" from the server on 4.2+.

    +
    serviceId?: ObjectId

    Accessors

    diff --git a/docs/6.16/classes/ConnectionCheckOutFailedEvent.html b/docs/6.16/classes/ConnectionCheckOutFailedEvent.html new file mode 100644 index 00000000000..8e3637601ff --- /dev/null +++ b/docs/6.16/classes/ConnectionCheckOutFailedEvent.html @@ -0,0 +1,13 @@ +ConnectionCheckOutFailedEvent | mongodb

    Class ConnectionCheckOutFailedEvent

    An event published when a request to check a connection out fails

    +

    Hierarchy (view full)

    Properties

    Properties

    address: string

    The address (host/port pair) of the pool

    +
    durationMS: number

    The time it took to check out the connection. +More specifically, the time elapsed between +emitting a ConnectionCheckOutStartedEvent +and emitting this event as part of the same check out.

    +
    reason: string

    The reason the attempt to check out failed

    +
    time: Date

    A timestamp when the event was created

    +
    diff --git a/docs/6.16/classes/ConnectionCheckOutStartedEvent.html b/docs/6.16/classes/ConnectionCheckOutStartedEvent.html new file mode 100644 index 00000000000..03b4a585ba8 --- /dev/null +++ b/docs/6.16/classes/ConnectionCheckOutStartedEvent.html @@ -0,0 +1,6 @@ +ConnectionCheckOutStartedEvent | mongodb

    Class ConnectionCheckOutStartedEvent

    An event published when a request to check a connection out begins

    +

    Hierarchy (view full)

    Properties

    Properties

    address: string

    The address (host/port pair) of the pool

    +
    time: Date

    A timestamp when the event was created

    +
    diff --git a/docs/6.16/classes/ConnectionCheckedInEvent.html b/docs/6.16/classes/ConnectionCheckedInEvent.html new file mode 100644 index 00000000000..90b36bef140 --- /dev/null +++ b/docs/6.16/classes/ConnectionCheckedInEvent.html @@ -0,0 +1,8 @@ +ConnectionCheckedInEvent | mongodb

    Class ConnectionCheckedInEvent

    An event published when a connection is checked into the connection pool

    +

    Hierarchy (view full)

    Properties

    Properties

    address: string

    The address (host/port pair) of the pool

    +
    connectionId: number | "<monitor>"

    The id of the connection

    +
    time: Date

    A timestamp when the event was created

    +
    diff --git a/docs/6.16/classes/ConnectionCheckedOutEvent.html b/docs/6.16/classes/ConnectionCheckedOutEvent.html new file mode 100644 index 00000000000..91e4773f333 --- /dev/null +++ b/docs/6.16/classes/ConnectionCheckedOutEvent.html @@ -0,0 +1,13 @@ +ConnectionCheckedOutEvent | mongodb

    Class ConnectionCheckedOutEvent

    An event published when a connection is checked out of the connection pool

    +

    Hierarchy (view full)

    Properties

    address: string

    The address (host/port pair) of the pool

    +
    connectionId: number | "<monitor>"

    The id of the connection

    +
    durationMS: number

    The time it took to check out the connection. +More specifically, the time elapsed between +emitting a ConnectionCheckOutStartedEvent +and emitting this event as part of the same checking out.

    +
    time: Date

    A timestamp when the event was created

    +
    diff --git a/docs/6.16/classes/ConnectionClosedEvent.html b/docs/6.16/classes/ConnectionClosedEvent.html new file mode 100644 index 00000000000..0d7735bacba --- /dev/null +++ b/docs/6.16/classes/ConnectionClosedEvent.html @@ -0,0 +1,11 @@ +ConnectionClosedEvent | mongodb

    Class ConnectionClosedEvent

    An event published when a connection is closed

    +

    Hierarchy (view full)

    Properties

    address: string

    The address (host/port pair) of the pool

    +
    connectionId: number | "<monitor>"

    The id of the connection

    +
    reason: string

    The reason the connection was closed

    +
    serviceId?: ObjectId
    time: Date

    A timestamp when the event was created

    +
    diff --git a/docs/6.16/classes/ConnectionCreatedEvent.html b/docs/6.16/classes/ConnectionCreatedEvent.html new file mode 100644 index 00000000000..e11bb20b14f --- /dev/null +++ b/docs/6.16/classes/ConnectionCreatedEvent.html @@ -0,0 +1,8 @@ +ConnectionCreatedEvent | mongodb

    Class ConnectionCreatedEvent

    An event published when a connection pool creates a new connection

    +

    Hierarchy (view full)

    Properties

    Properties

    address: string

    The address (host/port pair) of the pool

    +
    connectionId: number | "<monitor>"

    A monotonically increasing, per-pool id for the newly created connection

    +
    time: Date

    A timestamp when the event was created

    +
    diff --git a/docs/6.16/classes/ConnectionPoolClearedEvent.html b/docs/6.16/classes/ConnectionPoolClearedEvent.html new file mode 100644 index 00000000000..67a5d65ef08 --- /dev/null +++ b/docs/6.16/classes/ConnectionPoolClearedEvent.html @@ -0,0 +1,7 @@ +ConnectionPoolClearedEvent | mongodb

    Class ConnectionPoolClearedEvent

    An event published when a connection pool is cleared

    +

    Hierarchy (view full)

    Properties

    address: string

    The address (host/port pair) of the pool

    +
    interruptInUseConnections?: boolean
    time: Date

    A timestamp when the event was created

    +
    diff --git a/docs/6.16/classes/ConnectionPoolClosedEvent.html b/docs/6.16/classes/ConnectionPoolClosedEvent.html new file mode 100644 index 00000000000..89eba739022 --- /dev/null +++ b/docs/6.16/classes/ConnectionPoolClosedEvent.html @@ -0,0 +1,6 @@ +ConnectionPoolClosedEvent | mongodb

    Class ConnectionPoolClosedEvent

    An event published when a connection pool is closed

    +

    Hierarchy (view full)

    Properties

    Properties

    address: string

    The address (host/port pair) of the pool

    +
    time: Date

    A timestamp when the event was created

    +
    diff --git a/docs/6.16/classes/ConnectionPoolCreatedEvent.html b/docs/6.16/classes/ConnectionPoolCreatedEvent.html new file mode 100644 index 00000000000..69ee48a60da --- /dev/null +++ b/docs/6.16/classes/ConnectionPoolCreatedEvent.html @@ -0,0 +1,8 @@ +ConnectionPoolCreatedEvent | mongodb

    Class ConnectionPoolCreatedEvent

    An event published when a connection pool is created

    +

    Hierarchy (view full)

    Properties

    Properties

    address: string

    The address (host/port pair) of the pool

    +
    options: Pick<ConnectionPoolOptions,
        | "maxConnecting"
        | "maxIdleTimeMS"
        | "maxPoolSize"
        | "minPoolSize"
        | "waitQueueTimeoutMS">

    The options used to create this connection pool

    +
    time: Date

    A timestamp when the event was created

    +
    diff --git a/docs/6.16/classes/ConnectionPoolMonitoringEvent.html b/docs/6.16/classes/ConnectionPoolMonitoringEvent.html new file mode 100644 index 00000000000..7939b059d59 --- /dev/null +++ b/docs/6.16/classes/ConnectionPoolMonitoringEvent.html @@ -0,0 +1,6 @@ +ConnectionPoolMonitoringEvent | mongodb

    Class ConnectionPoolMonitoringEventAbstract

    The base export class for all monitoring events published from the connection pool

    +

    Hierarchy (view full)

    Properties

    Properties

    address: string

    The address (host/port pair) of the pool

    +
    time: Date

    A timestamp when the event was created

    +
    diff --git a/docs/6.16/classes/ConnectionPoolReadyEvent.html b/docs/6.16/classes/ConnectionPoolReadyEvent.html new file mode 100644 index 00000000000..d63648e9187 --- /dev/null +++ b/docs/6.16/classes/ConnectionPoolReadyEvent.html @@ -0,0 +1,6 @@ +ConnectionPoolReadyEvent | mongodb

    Class ConnectionPoolReadyEvent

    An event published when a connection pool is ready

    +

    Hierarchy (view full)

    Properties

    Properties

    address: string

    The address (host/port pair) of the pool

    +
    time: Date

    A timestamp when the event was created

    +
    diff --git a/docs/6.16/classes/ConnectionReadyEvent.html b/docs/6.16/classes/ConnectionReadyEvent.html new file mode 100644 index 00000000000..492daa49371 --- /dev/null +++ b/docs/6.16/classes/ConnectionReadyEvent.html @@ -0,0 +1,17 @@ +ConnectionReadyEvent | mongodb

    Class ConnectionReadyEvent

    An event published when a connection is ready for use

    +

    Hierarchy (view full)

    Properties

    address: string

    The address (host/port pair) of the pool

    +
    connectionId: number | "<monitor>"

    The id of the connection

    +
    durationMS: number

    The time it took to establish the connection. +In accordance with the definition of establishment of a connection +specified by ConnectionPoolOptions.maxConnecting, +it is the time elapsed between emitting a ConnectionCreatedEvent +and emitting this event as part of the same checking out.

    +

    Naturally, when establishing a connection is part of checking out, +this duration is not greater than +ConnectionCheckedOutEvent.duration.

    +
    time: Date

    A timestamp when the event was created

    +
    diff --git a/docs/6.16/classes/Db.html b/docs/6.16/classes/Db.html new file mode 100644 index 00000000000..12b01750b55 --- /dev/null +++ b/docs/6.16/classes/Db.html @@ -0,0 +1,146 @@ +Db | mongodb

    Class Db

    The Db class is a class that represents a MongoDB Database.

    +
    import { MongoClient } from 'mongodb';

    interface Pet {
    name: string;
    kind: 'dog' | 'cat' | 'fish';
    }

    const client = new MongoClient('mongodb://localhost:27017');
    const db = client.db();

    // Create a collection that validates our union
    await db.createCollection<Pet>('pets', {
    validator: { $expr: { $in: ['$kind', ['dog', 'cat', 'fish']] } }
    }) +
    + +

    Constructors

    • Creates a new Db instance.

      +

      Db name cannot contain a dot, the server may apply more restrictions when an operation is run.

      +

      Parameters

      • client: MongoClient

        The MongoClient for the database.

        +
      • databaseName: string

        The name of the database this instance represents.

        +
      • Optionaloptions: DbOptions

        Optional settings for Db construction.

        +

      Returns Db

    Properties

    SYSTEM_COMMAND_COLLECTION: string = CONSTANTS.SYSTEM_COMMAND_COLLECTION
    SYSTEM_INDEX_COLLECTION: string = CONSTANTS.SYSTEM_INDEX_COLLECTION
    SYSTEM_JS_COLLECTION: string = CONSTANTS.SYSTEM_JS_COLLECTION
    SYSTEM_NAMESPACE_COLLECTION: string = CONSTANTS.SYSTEM_NAMESPACE_COLLECTION
    SYSTEM_PROFILE_COLLECTION: string = CONSTANTS.SYSTEM_PROFILE_COLLECTION
    SYSTEM_USER_COLLECTION: string = CONSTANTS.SYSTEM_USER_COLLECTION

    Accessors

    • get readPreference(): ReadPreference
    • The current readPreference of the Db. If not explicitly defined for +this Db, will be inherited from the parent MongoClient

      +

      Returns ReadPreference

    • get secondaryOk(): boolean
    • Check if a secondary can be used (because the read preference is not set to primary)

      +

      Returns boolean

    • get timeoutMS(): undefined | number
    • Returns undefined | number

    Methods

    • Returns a reference to a MongoDB Collection. If it does not exist it will be created implicitly.

      +

      Collection namespace validation is performed server-side.

      +

      Type Parameters

      Parameters

      Returns Collection<TSchema>

      return the new Collection instance

      +
    • Execute a command

      +

      Parameters

      Returns Promise<Document>

      This command does not inherit options from the MongoClient.

      +

      The driver will ensure the following fields are attached to the command sent to the server:

      +
        +
      • lsid - sourced from an implicit session or options.session
      • +
      • $readPreference - defaults to primary or can be configured by options.readPreference
      • +
      • $db - sourced from the name of this database
      • +
      +

      If the client has a serverApi setting:

      +
        +
      • apiVersion
      • +
      • apiStrict
      • +
      • apiDeprecationErrors
      • +
      +

      When in a transaction:

      +
        +
      • readConcern - sourced from readConcern set on the TransactionOptions
      • +
      • writeConcern - sourced from writeConcern set on the TransactionOptions
      • +
      +

      Attaching any of the above fields to the command will have no effect as the driver will overwrite the value.

      +
    • Creates an index on the db and collection.

      +

      Parameters

      • name: string

        Name of the collection to create the index on.

        +
      • indexSpec: IndexSpecification

        Specify the field to index, or an index specification

        +
      • Optionaloptions: CreateIndexesOptions

        Optional settings for the command

        +

      Returns Promise<string>

    • Drop a collection from the database, removing it permanently. New accesses will create a new collection.

      +

      Parameters

      • name: string

        Name of collection to drop

        +
      • Optionaloptions: DropCollectionOptions

        Optional settings for the command

        +

      Returns Promise<boolean>

    • Drop a database, removing it permanently from the server.

      +

      Parameters

      Returns Promise<boolean>

    • Retrieve the current profiling Level for MongoDB

      +

      Parameters

      Returns Promise<string>

    • Remove a user from a database

      +

      Parameters

      • username: string

        The username to remove

        +
      • Optionaloptions: CommandOperationOptions

        Optional settings for the command

        +

      Returns Promise<boolean>

    • Rename a collection.

      +

      Type Parameters

      Parameters

      • fromCollection: string

        Name of current collection to rename

        +
      • toCollection: string

        New name of of the collection

        +
      • Optionaloptions: RenameOptions

        Optional settings for the command

        +

      Returns Promise<Collection<TSchema>>

      This operation does not inherit options from the MongoClient.

      +
    • A low level cursor API providing basic driver functionality:

      +
        +
      • ClientSession management
      • +
      • ReadPreference for server selection
      • +
      • Running getMores automatically when a local batch is exhausted
      • +
      +

      Parameters

      • command: Document

        The command that will start a cursor on the server.

        +
      • Optionaloptions: RunCursorCommandOptions

        Configurations for running the command, bson options will apply to getMores

        +

      Returns RunCommandCursor

    • Create a new Change Stream, watching for new changes (insertions, updates, +replacements, deletions, and invalidations) in this database. Will ignore all +changes to system collections.

      +

      Type Parameters

      Parameters

      • pipeline: Document[] = []

        An array of pipeline stages through which to pass change stream documents. This allows for filtering (using $match) and manipulating the change stream documents.

        +
      • options: ChangeStreamOptions = {}

        Optional settings for the command

        +

      Returns ChangeStream<TSchema, TChange>

      watch() accepts two generic arguments for distinct use cases:

      +
        +
      • The first is to provide the schema that may be defined for all the collections within this database
      • +
      • The second is to override the shape of the change stream document entirely, if it is not provided the type will default to ChangeStreamDocument of the first argument
      • +
      +

      In iterator mode, if a next() call throws a timeout error, it will attempt to resume the change stream. +The next call can just be retried after this succeeds.

      +
      const changeStream = collection.watch([], { timeoutMS: 100 });
      try {
      await changeStream.next();
      } catch (e) {
      if (e instanceof MongoOperationTimeoutError && !changeStream.closed) {
      await changeStream.next();
      }
      throw e;
      } +
      + +

      In emitter mode, if the change stream goes timeoutMS without emitting a change event, it will +emit an error event that returns a MongoOperationTimeoutError, but will not close the change +stream unless the resume attempt fails. There is no need to re-establish change listeners as +this will automatically continue emitting change events once the resume attempt completes.

      +
      const changeStream = collection.watch([], { timeoutMS: 100 });
      changeStream.on('change', console.log);
      changeStream.on('error', e => {
      if (e instanceof MongoOperationTimeoutError && !changeStream.closed) {
      // do nothing
      } else {
      changeStream.close();
      }
      }); +
      + +
    diff --git a/docs/6.16/classes/ExplainableCursor.html b/docs/6.16/classes/ExplainableCursor.html new file mode 100644 index 00000000000..a33bbfd632d --- /dev/null +++ b/docs/6.16/classes/ExplainableCursor.html @@ -0,0 +1,513 @@ +ExplainableCursor | mongodb

    Class ExplainableCursor<TSchema>Abstract

    A base class for any cursors that have explain() methods.

    +

    Type Parameters

    • TSchema

    Hierarchy (view full)

    Properties

    [asyncDispose]: (() => Promise<void>)

    An alias for AbstractCursor.close|AbstractCursor.close().

    +
    signal: undefined | AbortSignal
    captureRejections: boolean

    Value: boolean

    +

    Change the default captureRejections option on all new EventEmitter objects.

    +

    v13.4.0, v12.16.0

    +
    captureRejectionSymbol: typeof captureRejectionSymbol

    Value: Symbol.for('nodejs.rejection')

    +

    See how to write a custom rejection handler.

    +

    v13.4.0, v12.16.0

    +
    CLOSE: "close" = ...
    defaultMaxListeners: number

    By default, a maximum of 10 listeners can be registered for any single +event. This limit can be changed for individual EventEmitter instances +using the emitter.setMaxListeners(n) method. To change the default +for allEventEmitter instances, the events.defaultMaxListeners property +can be used. If this value is not a positive number, a RangeError is thrown.

    +

    Take caution when setting the events.defaultMaxListeners because the +change affects all EventEmitter instances, including those created before +the change is made. However, calling emitter.setMaxListeners(n) still has +precedence over events.defaultMaxListeners.

    +

    This is not a hard limit. The EventEmitter instance will allow +more listeners to be added but will output a trace warning to stderr indicating +that a "possible EventEmitter memory leak" has been detected. For any single +EventEmitter, the emitter.getMaxListeners() and emitter.setMaxListeners() methods can be used to +temporarily avoid this warning:

    +
    import { EventEmitter } from 'node:events';
    const emitter = new EventEmitter();
    emitter.setMaxListeners(emitter.getMaxListeners() + 1);
    emitter.once('event', () => {
    // do stuff
    emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
    }); +
    + +

    The --trace-warnings command-line flag can be used to display the +stack trace for such warnings.

    +

    The emitted warning can be inspected with process.on('warning') and will +have the additional emitter, type, and count properties, referring to +the event emitter instance, the event's name and the number of attached +listeners, respectively. +Its name property is set to 'MaxListenersExceededWarning'.

    +

    v0.11.2

    +
    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.

    +

    v13.6.0, v12.17.0

    +

    Accessors

    • get closed(): boolean
    • The cursor is closed and all remaining locally buffered documents have been iterated.

      +

      Returns boolean

    • get id(): undefined | Long
    • The cursor has no id until it receives a response from the initial cursor creating command.

      +

      It is non-zero for as long as the database has an open cursor.

      +

      The initiating command may receive a zero id if the entire result is in the firstBatch.

      +

      Returns undefined | Long

    • get killed(): boolean
    • A killCursors command was attempted on this cursor. +This is performed if the cursor id is non zero.

      +

      Returns boolean

    Methods

    • Type Parameters

      • K

      Parameters

      • error: Error
      • event: string | symbol
      • Rest...args: AnyRest

      Returns void

    • 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' -.

        +
      • value: boolean

        The flag boolean value.

        +

      Returns this

    • Frees any client-side resources used by the cursor.

      +

      Parameters

      • Optionaloptions: {
            timeoutMS?: number;
        }
        • OptionaltimeoutMS?: number

      Returns Promise<void>

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +to each.

      +

      Returns true if the event had listeners, false otherwise.

      +
      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener +
      + +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns boolean

      v0.1.26

      +
    • Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

      +
      import { EventEmitter } from 'node:events';

      const myEE = new EventEmitter();
      myEE.on('foo', () => {});
      myEE.on('bar', () => {});

      const sym = Symbol('symbol');
      myEE.on(sym, () => {});

      console.log(myEE.eventNames());
      // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
      + +

      Returns string[]

      v6.0.0

      +
    • Iterates over all the documents for this cursor using the iterator, callback pattern.

      +

      If the iterator returns false, iteration will stop.

      +

      Parameters

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

        The iteration callback.

        +
          • (doc): boolean | void
          • Parameters

            Returns boolean | void

      Returns Promise<void>

        +
      • Will be removed in a future release. Use for await...of instead.
      • +
      +
    • Returns the number of listeners listening for the event named eventName. +If listener is provided, it will return how many times the listener is found +in the list of the listeners of the event.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns number

      v3.2.0

      +
    • 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 = any

      Parameters

      • transform: ((doc: TSchema) => T)

        The mapping transformation method.

        +

      Returns AbstractCursor<T, AbstractCursorEvents>

      Note Cursors use null internally to indicate that there are no more documents in the cursor. Providing a mapping +function that maps values to null will result in the cursor closing itself before it has finished iterating +all documents. 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. +
      + +

      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. +Take note of the following 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 a maxTimeMS on the cursor query, allowing for hard timeout limits on queries (Only supported on MongoDB 2.6 or higher)

      +

      Parameters

      • value: number

        Number of milliseconds to wait before aborting the query.

        +

      Returns this

    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      Returns this

      v0.1.101

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      Returns this

      v0.3.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v6.0.0

      +
    • Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

      +
      import { EventEmitter } from 'node:events';
      const emitter = new EventEmitter();
      emitter.once('log', () => console.log('log once'));

      // Returns a new Array with a function `onceWrapper` which has a property
      // `listener` which contains the original listener bound above
      const listeners = emitter.rawListeners('log');
      const logFnWrapper = listeners[0];

      // Logs "log once" to the console and does not unbind the `once` event
      logFnWrapper.listener();

      // Logs "log once" to the console and removes the listener
      logFnWrapper();

      emitter.on('log', () => console.log('log persistently'));
      // Will return a new Array with a single function bound by `.on()` above
      const newListeners = emitter.rawListeners('log');

      // Logs "log persistently" twice
      newListeners[0]();
      emitter.emit('log'); +
      + +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns AbstractCursorEvents[EventKey][]

      v9.4.0

      +
    • Removes all listeners, or those of the specified eventName.

      +

      It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      • Optionalevent: string | symbol | EventKey

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v0.1.26

      +
    • 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

    • By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set to Infinity (or 0) to indicate an unlimited number of listeners.

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • n: number

      Returns this

      v0.3.5

      +
    • 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.

      +

      Returns Promise<TSchema[]>

    • Experimental

      Listens once to the abort event on the provided signal.

      +

      Listening to the abort event on abort signals is unsafe and may +lead to resource leaks since another third party with the signal can +call e.stopImmediatePropagation(). Unfortunately Node.js cannot change +this since it would violate the web standard. Additionally, the original +API makes it easy to forget to remove listeners.

      +

      This API allows safely using AbortSignals in Node.js APIs by solving these +two issues by listening to the event such that stopImmediatePropagation does +not prevent the listener from running.

      +

      Returns a disposable so that it may be unsubscribed from more easily.

      +
      import { addAbortListener } from 'node:events';

      function example(signal) {
      let disposable;
      try {
      signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
      disposable = addAbortListener(signal, (e) => {
      // Do something when signal is aborted.
      });
      } finally {
      disposable?.[Symbol.dispose]();
      }
      } +
      + +

      Parameters

      • signal: AbortSignal
      • resource: ((event: Event) => void)
          • (event): void
          • Parameters

            • event: Event

            Returns void

      Returns Disposable

      Disposable that removes the abort listener.

      +

      v20.5.0

      +
    • Returns a copy of the array of listeners for the event named eventName.

      +

      For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

      +

      For EventTargets this is the only way to get the event listeners for the +event target. 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<DefaultEventMap> | EventTarget
      • name: string | symbol

      Returns Function[]

      v15.2.0, v14.17.0

      +
    • Returns the currently set max amount of listeners.

      +

      For EventEmitters this behaves exactly the same as calling .getMaxListeners on +the emitter.

      +

      For EventTargets this is the only way to get the max event listeners for the +event target. If the number of event handlers on a single EventTarget exceeds +the max set, the EventTarget will print a warning.

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

      {
      const ee = new EventEmitter();
      console.log(getMaxListeners(ee)); // 10
      setMaxListeners(11, ee);
      console.log(getMaxListeners(ee)); // 11
      }
      {
      const et = new EventTarget();
      console.log(getMaxListeners(et)); // 10
      setMaxListeners(11, et);
      console.log(getMaxListeners(et)); // 11
      } +
      + +

      Parameters

      • emitter: EventEmitter<DefaultEventMap> | EventTarget

      Returns number

      v19.9.0

      +
    • A class method that returns the number of listeners for the given eventName registered on the given emitter.

      +
      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<DefaultEventMap>

        The emitter to query

        +
      • eventName: string | symbol

        The event name

        +

      Returns number

      v0.9.12

      +

      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'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

      +

      An AbortSignal can be used to cancel waiting on events:

      +
      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()); +
      + +

      Use the close option to specify an array of event names that will end the iteration:

      +
      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);
      ee.emit('close');
      });

      for await (const event of on(ee, 'foo', { close: ['close'] })) {
      console.log(event); // prints ['bar'] [42]
      }
      // the loop will exit after 'close' is emitted
      console.log('done'); // prints 'done' +
      + +

      Parameters

      • emitter: EventEmitter<DefaultEventMap>
      • eventName: string | symbol
      • Optionaloptions: StaticEventEmitterIteratorOptions

      Returns AsyncIterator<any[], any, any>

      An AsyncIterator that iterates eventName events emitted by the emitter

      +

      v13.6.0, v12.16.0

      +
    • Parameters

      • emitter: EventTarget
      • eventName: string
      • Optionaloptions: StaticEventEmitterIteratorOptions

      Returns AsyncIterator<any[], any, any>

    • 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.

      +

      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.

      +
      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. 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:

      +
      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:

      +
      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: EventEmitter<DefaultEventMap>
      • eventName: string | symbol
      • Optionaloptions: StaticEventEmitterOptions

      Returns Promise<any[]>

      v11.13.0, v10.16.0

      +
    • Parameters

      • emitter: EventTarget
      • eventName: string
      • Optionaloptions: StaticEventEmitterOptions

      Returns Promise<any[]>

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

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

      setMaxListeners(5, target, emitter); +
      + +

      Parameters

      • Optionaln: number

        A non-negative number. The maximum number of listeners per EventTarget event.

        +
      • Rest...eventTargets: (EventEmitter<DefaultEventMap> | EventTarget)[]

        Zero or more {EventTarget} or {EventEmitter} instances. If none are specified, n is set as the default max for all newly created {EventTarget} and {EventEmitter} +objects.

        +

      Returns void

      v15.4.0

      +
    diff --git a/docs/6.16/classes/FindCursor.html b/docs/6.16/classes/FindCursor.html new file mode 100644 index 00000000000..4ddc3a90c9e --- /dev/null +++ b/docs/6.16/classes/FindCursor.html @@ -0,0 +1,576 @@ +FindCursor | mongodb

    Class FindCursor<TSchema>

    Type Parameters

    • TSchema = any

    Hierarchy (view full)

    Properties

    [asyncDispose]: (() => Promise<void>)

    An alias for AbstractCursor.close|AbstractCursor.close().

    +
    signal: undefined | AbortSignal
    captureRejections: boolean

    Value: boolean

    +

    Change the default captureRejections option on all new EventEmitter objects.

    +

    v13.4.0, v12.16.0

    +
    captureRejectionSymbol: typeof captureRejectionSymbol

    Value: Symbol.for('nodejs.rejection')

    +

    See how to write a custom rejection handler.

    +

    v13.4.0, v12.16.0

    +
    CLOSE: "close" = ...
    defaultMaxListeners: number

    By default, a maximum of 10 listeners can be registered for any single +event. This limit can be changed for individual EventEmitter instances +using the emitter.setMaxListeners(n) method. To change the default +for allEventEmitter instances, the events.defaultMaxListeners property +can be used. If this value is not a positive number, a RangeError is thrown.

    +

    Take caution when setting the events.defaultMaxListeners because the +change affects all EventEmitter instances, including those created before +the change is made. However, calling emitter.setMaxListeners(n) still has +precedence over events.defaultMaxListeners.

    +

    This is not a hard limit. The EventEmitter instance will allow +more listeners to be added but will output a trace warning to stderr indicating +that a "possible EventEmitter memory leak" has been detected. For any single +EventEmitter, the emitter.getMaxListeners() and emitter.setMaxListeners() methods can be used to +temporarily avoid this warning:

    +
    import { EventEmitter } from 'node:events';
    const emitter = new EventEmitter();
    emitter.setMaxListeners(emitter.getMaxListeners() + 1);
    emitter.once('event', () => {
    // do stuff
    emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
    }); +
    + +

    The --trace-warnings command-line flag can be used to display the +stack trace for such warnings.

    +

    The emitted warning can be inspected with process.on('warning') and will +have the additional emitter, type, and count properties, referring to +the event emitter instance, the event's name and the number of attached +listeners, respectively. +Its name property is set to 'MaxListenersExceededWarning'.

    +

    v0.11.2

    +
    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.

    +

    v13.6.0, v12.17.0

    +

    Accessors

    • get closed(): boolean
    • The cursor is closed and all remaining locally buffered documents have been iterated.

      +

      Returns boolean

    • get id(): undefined | Long
    • The cursor has no id until it receives a response from the initial cursor creating command.

      +

      It is non-zero for as long as the database has an open cursor.

      +

      The initiating command may receive a zero id if the entire result is in the firstBatch.

      +

      Returns undefined | Long

    • get killed(): boolean
    • A killCursors command was attempted on this cursor. +This is performed if the cursor id is non zero.

      +

      Returns boolean

    Methods

    • Type Parameters

      • K

      Parameters

      • error: Error
      • event: string | symbol
      • Rest...args: AnyRest

      Returns void

    • 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' -.

        +
      • value: boolean

        The flag boolean value.

        +

      Returns this

    • Add a query modifier to the cursor query

      +

      Parameters

      • name: string

        The query modifier (must start with $, such as $orderby etc)

        +
      • value:
            | string
            | number
            | boolean
            | Document

        The modifier value.

        +

      Returns this

    • 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).

        +

      Returns this

    • 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 this

    • Get the count of documents for this cursor

      +

      Parameters

      Returns Promise<number>

      Use collection.estimatedDocumentCount or collection.countDocuments instead

      +
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +to each.

      +

      Returns true if the event had listeners, false otherwise.

      +
      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener +
      + +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns boolean

      v0.1.26

      +
    • Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

      +
      import { EventEmitter } from 'node:events';

      const myEE = new EventEmitter();
      myEE.on('foo', () => {});
      myEE.on('bar', () => {});

      const sym = Symbol('symbol');
      myEE.on(sym, () => {});

      console.log(myEE.eventNames());
      // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
      + +

      Returns string[]

      v6.0.0

      +
    • Iterates over all the documents for this cursor using the iterator, callback pattern.

      +

      If the iterator returns false, iteration will stop.

      +

      Parameters

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

        The iteration callback.

        +
          • (doc): boolean | void
          • Parameters

            Returns boolean | void

      Returns Promise<void>

        +
      • Will be removed in a future release. Use for await...of instead.
      • +
      +
    • Set the cursor hint

      +

      Parameters

      • hint: Hint

        If specified, then the query system will only consider plans using the hinted index.

        +

      Returns this

    • Set the limit for the cursor.

      +

      Parameters

      • value: number

        The limit for the cursor query.

        +

      Returns this

    • Returns the number of listeners listening for the event named eventName. +If listener is provided, it will return how many times the listener is found +in the list of the listeners of the event.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns number

      v3.2.0

      +
    • 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: TSchema) => T)

        The mapping transformation method.

        +

      Returns FindCursor<T>

      Note Cursors use null internally to indicate that there are no more documents in the cursor. Providing a mapping +function that maps values to null will result in the cursor closing itself before it has finished iterating +all documents. 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. +
      + +

      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. +Take note of the following 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(). The $max specifies the upper bound for all keys of a specific index in order.

        +

      Returns this

    • 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)

      +

      Parameters

      • value: number

        Number of milliseconds to wait before aborting the tailed query.

        +

      Returns this

    • Set a maxTimeMS on the cursor query, allowing for hard timeout limits on queries (Only supported on MongoDB 2.6 or higher)

      +

      Parameters

      • value: number

        Number of milliseconds to wait before aborting the query.

        +

      Returns this

    • 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(). The $min specifies the lower bound for all keys of a specific index in order.

        +

      Returns this

    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      Returns this

      v0.1.101

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      Returns this

      v0.3.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v6.0.0

      +
    • Add a project stage to the aggregation pipeline

      +

      Type Parameters

      Parameters

      Returns FindCursor<T>

      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.

      +
      // 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 }); +
      + +
      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' }
      }}); +
      + +
    • Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

      +
      import { EventEmitter } from 'node:events';
      const emitter = new EventEmitter();
      emitter.once('log', () => console.log('log once'));

      // Returns a new Array with a function `onceWrapper` which has a property
      // `listener` which contains the original listener bound above
      const listeners = emitter.rawListeners('log');
      const logFnWrapper = listeners[0];

      // Logs "log once" to the console and does not unbind the `once` event
      logFnWrapper.listener();

      // Logs "log once" to the console and removes the listener
      logFnWrapper();

      emitter.on('log', () => console.log('log persistently'));
      // Will return a new Array with a single function bound by `.on()` above
      const newListeners = emitter.rawListeners('log');

      // Logs "log persistently" twice
      newListeners[0]();
      emitter.emit('log'); +
      + +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns AbstractCursorEvents[EventKey][]

      v9.4.0

      +
    • Removes all listeners, or those of the specified eventName.

      +

      It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      • Optionalevent: string | symbol | EventKey

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v0.1.26

      +
    • Set the cursor 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. +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.

      +

      Parameters

      • value: boolean

        the returnKey value.

        +

      Returns this

    • 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

    • By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set to Infinity (or 0) to indicate an unlimited number of listeners.

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • n: number

      Returns this

      v0.3.5

      +
    • 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.

      +

      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.

        +

      Returns this

    • Set the skip for the cursor.

      +

      Parameters

      • value: number

        The skip for the cursor query.

        +

      Returns this

    • Sets the sort order of the cursor query.

      +

      Parameters

      • sort: Sort

        The key or keys set for the sort.

        +
      • Optionaldirection: SortDirection

        The direction of the sorting (1 or -1).

        +

      Returns this

    • 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.

      +

      Returns Promise<TSchema[]>

    • Experimental

      Listens once to the abort event on the provided signal.

      +

      Listening to the abort event on abort signals is unsafe and may +lead to resource leaks since another third party with the signal can +call e.stopImmediatePropagation(). Unfortunately Node.js cannot change +this since it would violate the web standard. Additionally, the original +API makes it easy to forget to remove listeners.

      +

      This API allows safely using AbortSignals in Node.js APIs by solving these +two issues by listening to the event such that stopImmediatePropagation does +not prevent the listener from running.

      +

      Returns a disposable so that it may be unsubscribed from more easily.

      +
      import { addAbortListener } from 'node:events';

      function example(signal) {
      let disposable;
      try {
      signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
      disposable = addAbortListener(signal, (e) => {
      // Do something when signal is aborted.
      });
      } finally {
      disposable?.[Symbol.dispose]();
      }
      } +
      + +

      Parameters

      • signal: AbortSignal
      • resource: ((event: Event) => void)
          • (event): void
          • Parameters

            • event: Event

            Returns void

      Returns Disposable

      Disposable that removes the abort listener.

      +

      v20.5.0

      +
    • Returns a copy of the array of listeners for the event named eventName.

      +

      For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

      +

      For EventTargets this is the only way to get the event listeners for the +event target. 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<DefaultEventMap> | EventTarget
      • name: string | symbol

      Returns Function[]

      v15.2.0, v14.17.0

      +
    • Returns the currently set max amount of listeners.

      +

      For EventEmitters this behaves exactly the same as calling .getMaxListeners on +the emitter.

      +

      For EventTargets this is the only way to get the max event listeners for the +event target. If the number of event handlers on a single EventTarget exceeds +the max set, the EventTarget will print a warning.

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

      {
      const ee = new EventEmitter();
      console.log(getMaxListeners(ee)); // 10
      setMaxListeners(11, ee);
      console.log(getMaxListeners(ee)); // 11
      }
      {
      const et = new EventTarget();
      console.log(getMaxListeners(et)); // 10
      setMaxListeners(11, et);
      console.log(getMaxListeners(et)); // 11
      } +
      + +

      Parameters

      • emitter: EventEmitter<DefaultEventMap> | EventTarget

      Returns number

      v19.9.0

      +
    • A class method that returns the number of listeners for the given eventName registered on the given emitter.

      +
      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<DefaultEventMap>

        The emitter to query

        +
      • eventName: string | symbol

        The event name

        +

      Returns number

      v0.9.12

      +

      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'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

      +

      An AbortSignal can be used to cancel waiting on events:

      +
      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()); +
      + +

      Use the close option to specify an array of event names that will end the iteration:

      +
      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);
      ee.emit('close');
      });

      for await (const event of on(ee, 'foo', { close: ['close'] })) {
      console.log(event); // prints ['bar'] [42]
      }
      // the loop will exit after 'close' is emitted
      console.log('done'); // prints 'done' +
      + +

      Parameters

      • emitter: EventEmitter<DefaultEventMap>
      • eventName: string | symbol
      • Optionaloptions: StaticEventEmitterIteratorOptions

      Returns AsyncIterator<any[], any, any>

      An AsyncIterator that iterates eventName events emitted by the emitter

      +

      v13.6.0, v12.16.0

      +
    • Parameters

      • emitter: EventTarget
      • eventName: string
      • Optionaloptions: StaticEventEmitterIteratorOptions

      Returns AsyncIterator<any[], any, any>

    • 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.

      +

      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.

      +
      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. 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:

      +
      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:

      +
      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: EventEmitter<DefaultEventMap>
      • eventName: string | symbol
      • Optionaloptions: StaticEventEmitterOptions

      Returns Promise<any[]>

      v11.13.0, v10.16.0

      +
    • Parameters

      • emitter: EventTarget
      • eventName: string
      • Optionaloptions: StaticEventEmitterOptions

      Returns Promise<any[]>

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

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

      setMaxListeners(5, target, emitter); +
      + +

      Parameters

      • Optionaln: number

        A non-negative number. The maximum number of listeners per EventTarget event.

        +
      • Rest...eventTargets: (EventEmitter<DefaultEventMap> | EventTarget)[]

        Zero or more {EventTarget} or {EventEmitter} instances. If none are specified, n is set as the default max for all newly created {EventTarget} and {EventEmitter} +objects.

        +

      Returns void

      v15.4.0

      +
    diff --git a/docs/6.16/classes/FindOperators.html b/docs/6.16/classes/FindOperators.html new file mode 100644 index 00000000000..e63fac009ab --- /dev/null +++ b/docs/6.16/classes/FindOperators.html @@ -0,0 +1,22 @@ +FindOperators | mongodb

    Class FindOperators

    A builder object that is returned from BulkOperationBase#find. +Is used to build a write operation that involves a query filter.

    +

    Properties

    bulkOperation: BulkOperationBase

    Methods

    • Specifies arrayFilters for UpdateOne or UpdateMany bulk operations.

      +

      Parameters

      Returns this

    • Upsert modifier for update bulk operation, noting that this operation is an upsert.

      +

      Returns this

    diff --git a/docs/6.16/classes/GridFSBucket.html b/docs/6.16/classes/GridFSBucket.html new file mode 100644 index 00000000000..d9c5e1f67f6 --- /dev/null +++ b/docs/6.16/classes/GridFSBucket.html @@ -0,0 +1,460 @@ +GridFSBucket | mongodb

    Class GridFSBucket

    Constructor for a streaming GridFS interface

    +

    Hierarchy (view full)

    Constructors

    Properties

    captureRejections: boolean

    Value: boolean

    +

    Change the default captureRejections option on all new EventEmitter objects.

    +

    v13.4.0, v12.16.0

    +
    captureRejectionSymbol: typeof captureRejectionSymbol

    Value: Symbol.for('nodejs.rejection')

    +

    See how to write a custom rejection handler.

    +

    v13.4.0, v12.16.0

    +
    defaultMaxListeners: number

    By default, a maximum of 10 listeners can be registered for any single +event. This limit can be changed for individual EventEmitter instances +using the emitter.setMaxListeners(n) method. To change the default +for allEventEmitter instances, the events.defaultMaxListeners property +can be used. If this value is not a positive number, a RangeError is thrown.

    +

    Take caution when setting the events.defaultMaxListeners because the +change affects all EventEmitter instances, including those created before +the change is made. However, calling emitter.setMaxListeners(n) still has +precedence over events.defaultMaxListeners.

    +

    This is not a hard limit. The EventEmitter instance will allow +more listeners to be added but will output a trace warning to stderr indicating +that a "possible EventEmitter memory leak" has been detected. For any single +EventEmitter, the emitter.getMaxListeners() and emitter.setMaxListeners() methods can be used to +temporarily avoid this warning:

    +
    import { EventEmitter } from 'node:events';
    const emitter = new EventEmitter();
    emitter.setMaxListeners(emitter.getMaxListeners() + 1);
    emitter.once('event', () => {
    // do stuff
    emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
    }); +
    + +

    The --trace-warnings command-line flag can be used to display the +stack trace for such warnings.

    +

    The emitted warning can be inspected with process.on('warning') and will +have the additional emitter, type, and count properties, referring to +the event emitter instance, the event's name and the number of attached +listeners, respectively. +Its name property is set to 'MaxListenersExceededWarning'.

    +

    v0.11.2

    +
    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.

    +

    v13.6.0, v12.17.0

    +
    INDEX: "index" = ...

    When the first call to openUploadStream is made, the upload stream will +check to see if it needs to create the proper indexes on the chunks and +files collections. This event is fired either when 1) it determines that +no index creation is necessary, 2) when it successfully creates the +necessary indexes.

    +

    Methods

    • Type Parameters

      • K

      Parameters

      • error: Error
      • event: string | symbol
      • Rest...args: AnyRest

      Returns void

    • Deletes a file with the given id

      +

      Parameters

      • id: ObjectId

        The id of the file doc

        +
      • Optionaloptions: {
            timeoutMS: number;
        }
        • timeoutMS: number

      Returns Promise<void>

    • Removes this bucket's files collection, followed by its chunks collection.

      +

      Parameters

      • Optionaloptions: {
            timeoutMS: number;
        }
        • timeoutMS: number

      Returns Promise<void>

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +to each.

      +

      Returns true if the event had listeners, false otherwise.

      +
      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener +
      + +

      Type Parameters

      • EventKey extends "index"

      Parameters

      Returns boolean

      v0.1.26

      +
    • Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

      +
      import { EventEmitter } from 'node:events';

      const myEE = new EventEmitter();
      myEE.on('foo', () => {});
      myEE.on('bar', () => {});

      const sym = Symbol('symbol');
      myEE.on(sym, () => {});

      console.log(myEE.eventNames());
      // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
      + +

      Returns string[]

      v6.0.0

      +
    • Returns the number of listeners listening for the event named eventName. +If listener is provided, it will return how many times the listener is found +in the list of the listeners of the event.

      +

      Type Parameters

      • EventKey extends "index"

      Parameters

      Returns number

      v3.2.0

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Type Parameters

      • EventKey extends "index"

      Parameters

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      Returns this

      v0.1.101

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Type Parameters

      • EventKey extends "index"

      Parameters

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      Returns this

      v0.3.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "index"

      Parameters

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "index"

      Parameters

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v6.0.0

      +
    • Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

      +
      import { EventEmitter } from 'node:events';
      const emitter = new EventEmitter();
      emitter.once('log', () => console.log('log once'));

      // Returns a new Array with a function `onceWrapper` which has a property
      // `listener` which contains the original listener bound above
      const listeners = emitter.rawListeners('log');
      const logFnWrapper = listeners[0];

      // Logs "log once" to the console and does not unbind the `once` event
      logFnWrapper.listener();

      // Logs "log once" to the console and removes the listener
      logFnWrapper();

      emitter.on('log', () => console.log('log persistently'));
      // Will return a new Array with a single function bound by `.on()` above
      const newListeners = emitter.rawListeners('log');

      // Logs "log persistently" twice
      newListeners[0]();
      emitter.emit('log'); +
      + +

      Type Parameters

      • EventKey extends "index"

      Parameters

      Returns GridFSBucketEvents[EventKey][]

      v9.4.0

      +
    • Removes all listeners, or those of the specified eventName.

      +

      It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "index"

      Parameters

      • Optionalevent: string | symbol | EventKey

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "index"

      Parameters

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v0.1.26

      +
    • Renames the file with the given _id to the given string

      +

      Parameters

      • id: ObjectId

        the id of the file to rename

        +
      • filename: string

        new name for the file

        +
      • Optionaloptions: {
            timeoutMS: number;
        }
        • timeoutMS: number

      Returns Promise<void>

    • By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set to Infinity (or 0) to indicate an unlimited number of listeners.

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • n: number

      Returns this

      v0.3.5

      +
    • Experimental

      Listens once to the abort event on the provided signal.

      +

      Listening to the abort event on abort signals is unsafe and may +lead to resource leaks since another third party with the signal can +call e.stopImmediatePropagation(). Unfortunately Node.js cannot change +this since it would violate the web standard. Additionally, the original +API makes it easy to forget to remove listeners.

      +

      This API allows safely using AbortSignals in Node.js APIs by solving these +two issues by listening to the event such that stopImmediatePropagation does +not prevent the listener from running.

      +

      Returns a disposable so that it may be unsubscribed from more easily.

      +
      import { addAbortListener } from 'node:events';

      function example(signal) {
      let disposable;
      try {
      signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
      disposable = addAbortListener(signal, (e) => {
      // Do something when signal is aborted.
      });
      } finally {
      disposable?.[Symbol.dispose]();
      }
      } +
      + +

      Parameters

      • signal: AbortSignal
      • resource: ((event: Event) => void)
          • (event): void
          • Parameters

            • event: Event

            Returns void

      Returns Disposable

      Disposable that removes the abort listener.

      +

      v20.5.0

      +
    • Returns a copy of the array of listeners for the event named eventName.

      +

      For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

      +

      For EventTargets this is the only way to get the event listeners for the +event target. 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<DefaultEventMap> | EventTarget
      • name: string | symbol

      Returns Function[]

      v15.2.0, v14.17.0

      +
    • Returns the currently set max amount of listeners.

      +

      For EventEmitters this behaves exactly the same as calling .getMaxListeners on +the emitter.

      +

      For EventTargets this is the only way to get the max event listeners for the +event target. If the number of event handlers on a single EventTarget exceeds +the max set, the EventTarget will print a warning.

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

      {
      const ee = new EventEmitter();
      console.log(getMaxListeners(ee)); // 10
      setMaxListeners(11, ee);
      console.log(getMaxListeners(ee)); // 11
      }
      {
      const et = new EventTarget();
      console.log(getMaxListeners(et)); // 10
      setMaxListeners(11, et);
      console.log(getMaxListeners(et)); // 11
      } +
      + +

      Parameters

      • emitter: EventEmitter<DefaultEventMap> | EventTarget

      Returns number

      v19.9.0

      +
    • A class method that returns the number of listeners for the given eventName registered on the given emitter.

      +
      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<DefaultEventMap>

        The emitter to query

        +
      • eventName: string | symbol

        The event name

        +

      Returns number

      v0.9.12

      +

      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'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

      +

      An AbortSignal can be used to cancel waiting on events:

      +
      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()); +
      + +

      Use the close option to specify an array of event names that will end the iteration:

      +
      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);
      ee.emit('close');
      });

      for await (const event of on(ee, 'foo', { close: ['close'] })) {
      console.log(event); // prints ['bar'] [42]
      }
      // the loop will exit after 'close' is emitted
      console.log('done'); // prints 'done' +
      + +

      Parameters

      • emitter: EventEmitter<DefaultEventMap>
      • eventName: string | symbol
      • Optionaloptions: StaticEventEmitterIteratorOptions

      Returns AsyncIterator<any[], any, any>

      An AsyncIterator that iterates eventName events emitted by the emitter

      +

      v13.6.0, v12.16.0

      +
    • Parameters

      • emitter: EventTarget
      • eventName: string
      • Optionaloptions: StaticEventEmitterIteratorOptions

      Returns AsyncIterator<any[], any, any>

    • 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.

      +

      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.

      +
      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. 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:

      +
      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:

      +
      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: EventEmitter<DefaultEventMap>
      • eventName: string | symbol
      • Optionaloptions: StaticEventEmitterOptions

      Returns Promise<any[]>

      v11.13.0, v10.16.0

      +
    • Parameters

      • emitter: EventTarget
      • eventName: string
      • Optionaloptions: StaticEventEmitterOptions

      Returns Promise<any[]>

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

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

      setMaxListeners(5, target, emitter); +
      + +

      Parameters

      • Optionaln: number

        A non-negative number. The maximum number of listeners per EventTarget event.

        +
      • Rest...eventTargets: (EventEmitter<DefaultEventMap> | EventTarget)[]

        Zero or more {EventTarget} or {EventEmitter} instances. If none are specified, n is set as the default max for all newly created {EventTarget} and {EventEmitter} +objects.

        +

      Returns void

      v15.4.0

      +
    diff --git a/docs/6.16/classes/GridFSBucketReadStream.html b/docs/6.16/classes/GridFSBucketReadStream.html new file mode 100644 index 00000000000..292381562e5 --- /dev/null +++ b/docs/6.16/classes/GridFSBucketReadStream.html @@ -0,0 +1,1174 @@ +GridFSBucketReadStream | mongodb

    Class GridFSBucketReadStream

    A readable stream that enables you to read buffers from GridFS.

    +

    Do not instantiate this class directly. Use openDownloadStream() instead.

    +

    Hierarchy

    • Readable
      • GridFSBucketReadStream

    Properties

    closed: boolean

    Is true after 'close' has been emitted.

    +

    v18.0.0

    +
    destroyed: boolean

    Is true after readable.destroy() has been called.

    +

    v8.0.0

    +
    errored: null | Error

    Returns error if the stream has been destroyed with an error.

    +

    v18.0.0

    +
    readable: boolean

    Is true if it is safe to call read, which means +the stream has not been destroyed or emitted 'error' or 'end'.

    +

    v11.4.0

    +
    readableAborted: boolean

    Returns whether the stream was destroyed or errored before emitting 'end'.

    +

    v16.8.0

    +
    readableDidRead: boolean

    Returns whether 'data' has been emitted.

    +

    v16.7.0, v14.18.0

    +
    readableEncoding: null | BufferEncoding

    Getter for the property encoding of a given Readable stream. The encoding property can be set using the setEncoding method.

    +

    v12.7.0

    +
    readableEnded: boolean

    Becomes true when 'end' event is emitted.

    +

    v12.9.0

    +
    readableFlowing: null | boolean

    This property reflects the current state of a Readable stream as described +in the Three states section.

    +

    v9.4.0

    +
    readableHighWaterMark: number

    Returns the value of highWaterMark passed when creating this Readable.

    +

    v9.3.0

    +
    readableLength: number

    This property contains the number of bytes (or objects) in the queue +ready to be read. The value provides introspection data regarding +the status of the highWaterMark.

    +

    v9.4.0

    +
    readableObjectMode: boolean

    Getter for the property objectMode of a given Readable stream.

    +

    v12.3.0

    +
    captureRejections: boolean

    Value: boolean

    +

    Change the default captureRejections option on all new EventEmitter objects.

    +

    v13.4.0, v12.16.0

    +
    captureRejectionSymbol: typeof captureRejectionSymbol

    Value: Symbol.for('nodejs.rejection')

    +

    See how to write a custom rejection handler.

    +

    v13.4.0, v12.16.0

    +
    defaultMaxListeners: number

    By default, a maximum of 10 listeners can be registered for any single +event. This limit can be changed for individual EventEmitter instances +using the emitter.setMaxListeners(n) method. To change the default +for allEventEmitter instances, the events.defaultMaxListeners property +can be used. If this value is not a positive number, a RangeError is thrown.

    +

    Take caution when setting the events.defaultMaxListeners because the +change affects all EventEmitter instances, including those created before +the change is made. However, calling emitter.setMaxListeners(n) still has +precedence over events.defaultMaxListeners.

    +

    This is not a hard limit. The EventEmitter instance will allow +more listeners to be added but will output a trace warning to stderr indicating +that a "possible EventEmitter memory leak" has been detected. For any single +EventEmitter, the emitter.getMaxListeners() and emitter.setMaxListeners() methods can be used to +temporarily avoid this warning:

    +
    import { EventEmitter } from 'node:events';
    const emitter = new EventEmitter();
    emitter.setMaxListeners(emitter.getMaxListeners() + 1);
    emitter.once('event', () => {
    // do stuff
    emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
    }); +
    + +

    The --trace-warnings command-line flag can be used to display the +stack trace for such warnings.

    +

    The emitted warning can be inspected with process.on('warning') and will +have the additional emitter, type, and count properties, referring to +the event emitter instance, the event's name and the number of attached +listeners, respectively. +Its name property is set to 'MaxListenersExceededWarning'.

    +

    v0.11.2

    +
    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.

    +

    v13.6.0, v12.17.0

    +
    FILE: "file" = ...

    Fires when the stream loaded the file document corresponding to the provided id.

    +

    Methods

    • Parameters

      • callback: ((error?: null | Error) => void)
          • (error?): void
          • Parameters

            • Optionalerror: null | Error

            Returns void

      Returns void

    • Parameters

      • error: null | Error
      • callback: ((error?: null | Error) => void)
          • (error?): void
          • Parameters

            • Optionalerror: null | Error

            Returns void

      Returns void

    • Calls readable.destroy() with an AbortError and returns a promise that fulfills when the stream is finished.

      +

      Returns Promise<void>

      v20.4.0

      +
    • Returns AsyncIterator<any, any, any>

    • Type Parameters

      • K

      Parameters

      • error: Error
      • event: string | symbol
      • Rest...args: AnyRest

      Returns void

    • Marks this stream as aborted (will never push another data event) +and kills the underlying cursor. Will emit the 'end' event, and then +the 'close' event once the cursor is successfully killed.

      +

      Returns Promise<void>

    • Event emitter +The defined events on documents including:

      +
        +
      1. close
      2. +
      3. data
      4. +
      5. end
      6. +
      7. error
      8. +
      9. pause
      10. +
      11. readable
      12. +
      13. resume
      14. +
      +

      Parameters

      • event: "close"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

    • Alias for emitter.on(eventName, listener).

      +

      Parameters

      • event: "data"
      • listener: ((chunk: any) => void)
          • (chunk): void
          • Parameters

            • chunk: any

            Returns void

      Returns this

      v0.1.26

      +
    • Alias for emitter.on(eventName, listener).

      +

      Parameters

      • event: "end"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      +
    • Alias for emitter.on(eventName, listener).

      +

      Parameters

      • event: "error"
      • listener: ((err: Error) => void)
          • (err): void
          • Parameters

            • err: Error

            Returns void

      Returns this

      v0.1.26

      +
    • Alias for emitter.on(eventName, listener).

      +

      Parameters

      • event: "pause"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      +
    • Alias for emitter.on(eventName, listener).

      +

      Parameters

      • event: "readable"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      +
    • Alias for emitter.on(eventName, listener).

      +

      Parameters

      • event: "resume"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      +
    • Alias for emitter.on(eventName, listener).

      +

      Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)
          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v0.1.26

      +
    • This method returns a new stream with chunks of the underlying stream paired with a counter +in the form [index, chunk]. The first index value is 0 and it increases by 1 for each chunk produced.

      +

      Parameters

      • Optionaloptions: Pick<ArrayOptions, "signal">

      Returns Readable

      a stream of indexed pairs.

      +

      v17.5.0

      +
    • Type Parameters

      • T extends ReadableStream

      Parameters

      • stream:
            | ComposeFnParam
            | T
            | Iterable<T>
            | AsyncIterable<T>
      • Optionaloptions: {
            signal: AbortSignal;
        }
        • signal: AbortSignal

      Returns T

    • Destroy the stream. Optionally emit an 'error' event, and emit a 'close' event (unless emitClose is set to false). After this call, the readable +stream will release any internal resources and subsequent calls to push() will be ignored.

      +

      Once destroy() has been called any further calls will be a no-op and no +further errors except from _destroy() may be emitted as 'error'.

      +

      Implementors should not override this method, but instead implement readable._destroy().

      +

      Parameters

      • Optionalerror: Error

        Error which will be passed as payload in 'error' event

        +

      Returns this

      v8.0.0

      +
    • This method returns a new stream with the first limit chunks dropped from the start.

      +

      Parameters

      • limit: number

        the number of chunks to drop from the readable.

        +
      • Optionaloptions: Pick<ArrayOptions, "signal">

      Returns Readable

      a stream with limit chunks dropped from the start.

      +

      v17.5.0

      +
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +to each.

      +

      Returns true if the event had listeners, false otherwise.

      +
      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener +
      + +

      Parameters

      • event: "close"

      Returns boolean

      v0.1.26

      +
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +to each.

      +

      Returns true if the event had listeners, false otherwise.

      +
      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener +
      + +

      Parameters

      • event: "data"
      • chunk: any

      Returns boolean

      v0.1.26

      +
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +to each.

      +

      Returns true if the event had listeners, false otherwise.

      +
      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener +
      + +

      Parameters

      • event: "end"

      Returns boolean

      v0.1.26

      +
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +to each.

      +

      Returns true if the event had listeners, false otherwise.

      +
      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener +
      + +

      Parameters

      • event: "error"
      • err: Error

      Returns boolean

      v0.1.26

      +
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +to each.

      +

      Returns true if the event had listeners, false otherwise.

      +
      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener +
      + +

      Parameters

      • event: "pause"

      Returns boolean

      v0.1.26

      +
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +to each.

      +

      Returns true if the event had listeners, false otherwise.

      +
      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener +
      + +

      Parameters

      • event: "readable"

      Returns boolean

      v0.1.26

      +
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +to each.

      +

      Returns true if the event had listeners, false otherwise.

      +
      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener +
      + +

      Parameters

      • event: "resume"

      Returns boolean

      v0.1.26

      +
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +to each.

      +

      Returns true if the event had listeners, false otherwise.

      +
      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener +
      + +

      Parameters

      • event: string | symbol
      • Rest...args: any[]

      Returns boolean

      v0.1.26

      +
    • Sets the 0-based offset in bytes to start streaming from. Throws +an error if this stream has entered flowing mode +(e.g. if you've already called on('data'))

      +

      Parameters

      • end: number = 0

        Offset in bytes to stop reading at

        +

      Returns this

    • Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

      +
      import { EventEmitter } from 'node:events';

      const myEE = new EventEmitter();
      myEE.on('foo', () => {});
      myEE.on('bar', () => {});

      const sym = Symbol('symbol');
      myEE.on(sym, () => {});

      console.log(myEE.eventNames());
      // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
      + +

      Returns (string | symbol)[]

      v6.0.0

      +
    • This method is similar to Array.prototype.every and calls fn on each chunk in the stream +to check if all awaited return values are truthy value for fn. Once an fn call on a chunk +awaited return value is falsy, the stream is destroyed and the promise is fulfilled with false. +If all of the fn calls on the chunks return a truthy value, the promise is fulfilled with true.

      +

      Parameters

      • fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => boolean | Promise<boolean>)

        a function to call on each chunk of the stream. Async or not.

        +
          • (data, options?): boolean | Promise<boolean>
          • Parameters

            • data: any
            • Optionaloptions: Pick<ArrayOptions, "signal">

            Returns boolean | Promise<boolean>

      • Optionaloptions: ArrayOptions

      Returns Promise<boolean>

      a promise evaluating to true if fn returned a truthy value for every one of the chunks.

      +

      v17.5.0

      +
    • This method allows filtering the stream. For each chunk in the stream the fn function will be called +and if it returns a truthy value, the chunk will be passed to the result stream. +If the fn function returns a promise - that promise will be awaited.

      +

      Parameters

      • fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => boolean | Promise<boolean>)

        a function to filter chunks from the stream. Async or not.

        +
          • (data, options?): boolean | Promise<boolean>
          • Parameters

            • data: any
            • Optionaloptions: Pick<ArrayOptions, "signal">

            Returns boolean | Promise<boolean>

      • Optionaloptions: ArrayOptions

      Returns Readable

      a stream filtered with the predicate fn.

      +

      v17.4.0, v16.14.0

      +
    • This method is similar to Array.prototype.find and calls fn on each chunk in the stream +to find a chunk with a truthy value for fn. Once an fn call's awaited return value is truthy, +the stream is destroyed and the promise is fulfilled with value for which fn returned a truthy value. +If all of the fn calls on the chunks return a falsy value, the promise is fulfilled with undefined.

      +

      Type Parameters

      • T

      Parameters

      • fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => data is T)

        a function to call on each chunk of the stream. Async or not.

        +
          • (data, options?): data is T
          • Parameters

            • data: any
            • Optionaloptions: Pick<ArrayOptions, "signal">

            Returns data is T

      • Optionaloptions: ArrayOptions

      Returns Promise<undefined | T>

      a promise evaluating to the first chunk for which fn evaluated with a truthy value, +or undefined if no element was found.

      +

      v17.5.0

      +
    • Parameters

      • fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => boolean | Promise<boolean>)
          • (data, options?): boolean | Promise<boolean>
          • Parameters

            • data: any
            • Optionaloptions: Pick<ArrayOptions, "signal">

            Returns boolean | Promise<boolean>

      • Optionaloptions: ArrayOptions

      Returns Promise<any>

    • This method returns a new stream by applying the given callback to each chunk of the stream +and then flattening the result.

      +

      It is possible to return a stream or another iterable or async iterable from fn and the result streams +will be merged (flattened) into the returned stream.

      +

      Parameters

      • fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => any)

        a function to map over every chunk in the stream. May be async. May be a stream or generator.

        +
          • (data, options?): any
          • Parameters

            • data: any
            • Optionaloptions: Pick<ArrayOptions, "signal">

            Returns any

      • Optionaloptions: ArrayOptions

      Returns Readable

      a stream flat-mapped with the function fn.

      +

      v17.5.0

      +
    • This method allows iterating a stream. For each chunk in the stream the fn function will be called. +If the fn function returns a promise - that promise will be awaited.

      +

      This method is different from for await...of loops in that it can optionally process chunks concurrently. +In addition, a forEach iteration can only be stopped by having passed a signal option +and aborting the related AbortController while for await...of can be stopped with break or return. +In either case the stream will be destroyed.

      +

      This method is different from listening to the 'data' event in that it uses the readable event +in the underlying machinary and can limit the number of concurrent fn calls.

      +

      Parameters

      • fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => void | Promise<void>)

        a function to call on each chunk of the stream. Async or not.

        +
          • (data, options?): void | Promise<void>
          • Parameters

            • data: any
            • Optionaloptions: Pick<ArrayOptions, "signal">

            Returns void | Promise<void>

      • Optionaloptions: ArrayOptions

      Returns Promise<void>

      a promise for when the stream has finished.

      +

      v17.5.0

      +
    • Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to EventEmitter.defaultMaxListeners.

      +

      Returns number

      v1.0.0

      +
    • The readable.isPaused() method returns the current operating state of the Readable. +This is used primarily by the mechanism that underlies the readable.pipe() method. +In most typical cases, there will be no reason to use this method directly.

      +
      const readable = new stream.Readable();

      readable.isPaused(); // === false
      readable.pause();
      readable.isPaused(); // === true
      readable.resume();
      readable.isPaused(); // === false +
      + +

      Returns boolean

      v0.11.14

      +
    • The iterator created by this method gives users the option to cancel the destruction +of the stream if the for await...of loop is exited by return, break, or throw, +or if the iterator should destroy the stream if the stream emitted an error during iteration.

      +

      Parameters

      • Optionaloptions: {
            destroyOnReturn?: boolean;
        }
        • OptionaldestroyOnReturn?: boolean

          When set to false, calling return on the async iterator, +or exiting a for await...of iteration using a break, return, or throw will not destroy the stream. +Default: true.

          +

      Returns AsyncIterator<any, any, any>

      v16.3.0

      +
    • Returns the number of listeners listening for the event named eventName. +If listener is provided, it will return how many times the listener is found +in the list of the listeners of the event.

      +

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

        The name of the event being listened for

        +
      • Optionallistener: Function

        The event handler function

        +

      Returns number

      v3.2.0

      +
    • Returns a copy of the array of listeners for the event named eventName.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      });
      console.log(util.inspect(server.listeners('connection')));
      // Prints: [ [Function] ] +
      + +

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

      Returns Function[]

      v0.1.26

      +
    • This method allows mapping over the stream. The fn function will be called for every chunk in the stream. +If the fn function returns a promise - that promise will be awaited before being passed to the result stream.

      +

      Parameters

      • fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => any)

        a function to map over every chunk in the stream. Async or not.

        +
          • (data, options?): any
          • Parameters

            • data: any
            • Optionaloptions: Pick<ArrayOptions, "signal">

            Returns any

      • Optionaloptions: ArrayOptions

      Returns Readable

      a stream mapped with the function fn.

      +

      v17.4.0, v16.14.0

      +
    • Alias for emitter.removeListener().

      +

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol
      • listener: ((...args: any[]) => void)
          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v10.0.0

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: "close"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: "data"
      • listener: ((chunk: any) => void)

        The callback function

        +
          • (chunk): void
          • Parameters

            • chunk: any

            Returns void

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: "end"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: "error"
      • listener: ((err: Error) => void)

        The callback function

        +
          • (err): void
          • Parameters

            • err: Error

            Returns void

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: "pause"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: "readable"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: "resume"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)

        The callback function

        +
          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v0.1.101

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: "close"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: "data"
      • listener: ((chunk: any) => void)

        The callback function

        +
          • (chunk): void
          • Parameters

            • chunk: any

            Returns void

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: "end"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: "error"
      • listener: ((err: Error) => void)

        The callback function

        +
          • (err): void
          • Parameters

            • err: Error

            Returns void

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: "pause"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: "readable"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: "resume"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)

        The callback function

        +
          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v0.3.0

      +
    • The readable.pause() method will cause a stream in flowing mode to stop +emitting 'data' events, switching out of flowing mode. Any data that +becomes available will remain in the internal buffer.

      +
      const readable = getReadableStreamSomehow();
      readable.on('data', (chunk) => {
      console.log(`Received ${chunk.length} bytes of data.`);
      readable.pause();
      console.log('There will be no additional data for 1 second.');
      setTimeout(() => {
      console.log('Now data will start flowing again.');
      readable.resume();
      }, 1000);
      }); +
      + +

      The readable.pause() method has no effect if there is a 'readable' event listener.

      +

      Returns this

      v0.9.4

      +
    • Type Parameters

      • T extends WritableStream

      Parameters

      • destination: T
      • Optionaloptions: {
            end?: boolean;
        }
        • Optionalend?: boolean

      Returns T

    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "close"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "data"
      • listener: ((chunk: any) => void)

        The callback function

        +
          • (chunk): void
          • Parameters

            • chunk: any

            Returns void

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "end"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "error"
      • listener: ((err: Error) => void)

        The callback function

        +
          • (err): void
          • Parameters

            • err: Error

            Returns void

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "pause"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "readable"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "resume"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)

        The callback function

        +
          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "close"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "data"
      • listener: ((chunk: any) => void)

        The callback function

        +
          • (chunk): void
          • Parameters

            • chunk: any

            Returns void

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "end"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "error"
      • listener: ((err: Error) => void)

        The callback function

        +
          • (err): void
          • Parameters

            • err: Error

            Returns void

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "pause"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "readable"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "resume"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)

        The callback function

        +
          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v6.0.0

      +
    • Parameters

      • chunk: any
      • Optionalencoding: BufferEncoding

      Returns boolean

    • Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

      +
      import { EventEmitter } from 'node:events';
      const emitter = new EventEmitter();
      emitter.once('log', () => console.log('log once'));

      // Returns a new Array with a function `onceWrapper` which has a property
      // `listener` which contains the original listener bound above
      const listeners = emitter.rawListeners('log');
      const logFnWrapper = listeners[0];

      // Logs "log once" to the console and does not unbind the `once` event
      logFnWrapper.listener();

      // Logs "log once" to the console and removes the listener
      logFnWrapper();

      emitter.on('log', () => console.log('log persistently'));
      // Will return a new Array with a single function bound by `.on()` above
      const newListeners = emitter.rawListeners('log');

      // Logs "log persistently" twice
      newListeners[0]();
      emitter.emit('log'); +
      + +

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

      Returns Function[]

      v9.4.0

      +
    • The readable.read() method reads data out of the internal buffer and +returns it. If no data is available to be read, null is returned. By default, +the data is returned as a Buffer object unless an encoding has been +specified using the readable.setEncoding() method or the stream is operating +in object mode.

      +

      The optional size argument specifies a specific number of bytes to read. If +size bytes are not available to be read, null will be returned unless the +stream has ended, in which case all of the data remaining in the internal buffer +will be returned.

      +

      If the size argument is not specified, all of the data contained in the +internal buffer will be returned.

      +

      The size argument must be less than or equal to 1 GiB.

      +

      The readable.read() method should only be called on Readable streams +operating in paused mode. In flowing mode, readable.read() is called +automatically until the internal buffer is fully drained.

      +
      const readable = getReadableStreamSomehow();

      // 'readable' may be triggered multiple times as data is buffered in
      readable.on('readable', () => {
      let chunk;
      console.log('Stream is readable (new data received in buffer)');
      // Use a loop to make sure we read all currently available data
      while (null !== (chunk = readable.read())) {
      console.log(`Read ${chunk.length} bytes of data...`);
      }
      });

      // 'end' will be triggered once when there is no more data available
      readable.on('end', () => {
      console.log('Reached end of stream.');
      }); +
      + +

      Each call to readable.read() returns a chunk of data, or null. The chunks +are not concatenated. A while loop is necessary to consume all data +currently in the buffer. When reading a large file .read() may return null, +having consumed all buffered content so far, but there is still more data to +come not yet buffered. In this case a new 'readable' event will be emitted +when there is more data in the buffer. Finally the 'end' event will be +emitted when there is no more data to come.

      +

      Therefore to read a file's whole contents from a readable, it is necessary +to collect chunks across multiple 'readable' events:

      +
      const chunks = [];

      readable.on('readable', () => {
      let chunk;
      while (null !== (chunk = readable.read())) {
      chunks.push(chunk);
      }
      });

      readable.on('end', () => {
      const content = chunks.join('');
      }); +
      + +

      A Readable stream in object mode will always return a single item from +a call to readable.read(size), regardless of the value of the size argument.

      +

      If the readable.read() method returns a chunk of data, a 'data' event will +also be emitted.

      +

      Calling read after the 'end' event has +been emitted will return null. No runtime error will be raised.

      +

      Parameters

      • Optionalsize: number

        Optional argument to specify how much data to read.

        +

      Returns any

      v0.9.4

      +
    • This method calls fn on each chunk of the stream in order, passing it the result from the calculation +on the previous element. It returns a promise for the final value of the reduction.

      +

      If no initial value is supplied the first chunk of the stream is used as the initial value. +If the stream is empty, the promise is rejected with a TypeError with the ERR_INVALID_ARGS code property.

      +

      The reducer function iterates the stream element-by-element which means that there is no concurrency parameter +or parallelism. To perform a reduce concurrently, you can extract the async function to readable.map method.

      +

      Type Parameters

      • T = any

      Parameters

      • fn: ((previous: any, data: any, options?: Pick<ArrayOptions, "signal">) => T)

        a reducer function to call over every chunk in the stream. Async or not.

        +
          • (previous, data, options?): T
          • Parameters

            • previous: any
            • data: any
            • Optionaloptions: Pick<ArrayOptions, "signal">

            Returns T

      • Optionalinitial: undefined

        the initial value to use in the reduction.

        +
      • Optionaloptions: Pick<ArrayOptions, "signal">

      Returns Promise<T>

      a promise for the final value of the reduction.

      +

      v17.5.0

      +
    • Type Parameters

      • T = any

      Parameters

      • fn: ((previous: T, data: any, options?: Pick<ArrayOptions, "signal">) => T)
          • (previous, data, options?): T
          • Parameters

            • previous: T
            • data: any
            • Optionaloptions: Pick<ArrayOptions, "signal">

            Returns T

      • initial: T
      • Optionaloptions: Pick<ArrayOptions, "signal">

      Returns Promise<T>

    • Removes all listeners, or those of the specified eventName.

      +

      It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • OptionaleventName: string | symbol

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "close"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "data"
      • listener: ((chunk: any) => void)
          • (chunk): void
          • Parameters

            • chunk: any

            Returns void

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "end"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "error"
      • listener: ((err: Error) => void)
          • (err): void
          • Parameters

            • err: Error

            Returns void

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "pause"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "readable"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "resume"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)
          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v0.1.26

      +
    • The readable.resume() method causes an explicitly paused Readable stream to +resume emitting 'data' events, switching the stream into flowing mode.

      +

      The readable.resume() method can be used to fully consume the data from a +stream without actually processing any of that data:

      +
      getReadableStreamSomehow()
      .resume()
      .on('end', () => {
      console.log('Reached the end, but did not read anything.');
      }); +
      + +

      The readable.resume() method has no effect if there is a 'readable' event listener.

      +

      Returns this

      v0.9.4

      +
    • The readable.setEncoding() method sets the character encoding for +data read from the Readable stream.

      +

      By default, no encoding is assigned and stream data will be returned as Buffer objects. Setting an encoding causes the stream data +to be returned as strings of the specified encoding rather than as Buffer objects. For instance, calling readable.setEncoding('utf8') will cause the +output data to be interpreted as UTF-8 data, and passed as strings. Calling readable.setEncoding('hex') will cause the data to be encoded in hexadecimal +string format.

      +

      The Readable stream will properly handle multi-byte characters delivered +through the stream that would otherwise become improperly decoded if simply +pulled from the stream as Buffer objects.

      +
      const readable = getReadableStreamSomehow();
      readable.setEncoding('utf8');
      readable.on('data', (chunk) => {
      assert.equal(typeof chunk, 'string');
      console.log('Got %d characters of string data:', chunk.length);
      }); +
      + +

      Parameters

      • encoding: BufferEncoding

        The encoding to use.

        +

      Returns this

      v0.9.4

      +
    • By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set to Infinity (or 0) to indicate an unlimited number of listeners.

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • n: number

      Returns this

      v0.3.5

      +
    • This method is similar to Array.prototype.some and calls fn on each chunk in the stream +until the awaited return value is true (or any truthy value). Once an fn call on a chunk +awaited return value is truthy, the stream is destroyed and the promise is fulfilled with true. +If none of the fn calls on the chunks return a truthy value, the promise is fulfilled with false.

      +

      Parameters

      • fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => boolean | Promise<boolean>)

        a function to call on each chunk of the stream. Async or not.

        +
          • (data, options?): boolean | Promise<boolean>
          • Parameters

            • data: any
            • Optionaloptions: Pick<ArrayOptions, "signal">

            Returns boolean | Promise<boolean>

      • Optionaloptions: ArrayOptions

      Returns Promise<boolean>

      a promise evaluating to true if fn returned a truthy value for at least one of the chunks.

      +

      v17.5.0

      +
    • Sets the 0-based offset in bytes to start streaming from. Throws +an error if this stream has entered flowing mode +(e.g. if you've already called on('data'))

      +

      Parameters

      • start: number = 0

        0-based offset in bytes to start streaming from

        +

      Returns this

    • This method returns a new stream with the first limit chunks.

      +

      Parameters

      • limit: number

        the number of chunks to take from the readable.

        +
      • Optionaloptions: Pick<ArrayOptions, "signal">

      Returns Readable

      a stream with limit chunks taken.

      +

      v17.5.0

      +
    • This method allows easily obtaining the contents of a stream.

      +

      As this method reads the entire stream into memory, it negates the benefits of streams. It's intended +for interoperability and convenience, not as the primary way to consume streams.

      +

      Parameters

      • Optionaloptions: Pick<ArrayOptions, "signal">

      Returns Promise<any[]>

      a promise containing an array with the contents of the stream.

      +

      v17.5.0

      +
    • The readable.unpipe() method detaches a Writable stream previously attached +using the pipe method.

      +

      If the destination is not specified, then all pipes are detached.

      +

      If the destination is specified, but no pipe is set up for it, then +the method does nothing.

      +
      import fs from 'node:fs';
      const readable = getReadableStreamSomehow();
      const writable = fs.createWriteStream('file.txt');
      // All the data from readable goes into 'file.txt',
      // but only for the first second.
      readable.pipe(writable);
      setTimeout(() => {
      console.log('Stop writing to file.txt.');
      readable.unpipe(writable);
      console.log('Manually close the file stream.');
      writable.end();
      }, 1000); +
      + +

      Parameters

      • Optionaldestination: WritableStream

        Optional specific stream to unpipe

        +

      Returns this

      v0.9.4

      +
    • Passing chunk as null signals the end of the stream (EOF) and behaves the +same as readable.push(null), after which no more data can be written. The EOF +signal is put at the end of the buffer and any buffered data will still be +flushed.

      +

      The readable.unshift() method pushes a chunk of data back into the internal +buffer. This is useful in certain situations where a stream is being consumed by +code that needs to "un-consume" some amount of data that it has optimistically +pulled out of the source, so that the data can be passed on to some other party.

      +

      The stream.unshift(chunk) method cannot be called after the 'end' event +has been emitted or a runtime error will be thrown.

      +

      Developers using stream.unshift() often should consider switching to +use of a Transform stream instead. See the API for stream implementers section for more information.

      +
      // Pull off a header delimited by \n\n.
      // Use unshift() if we get too much.
      // Call the callback with (error, header, stream).
      import { StringDecoder } from 'node:string_decoder';
      function parseHeader(stream, callback) {
      stream.on('error', callback);
      stream.on('readable', onReadable);
      const decoder = new StringDecoder('utf8');
      let header = '';
      function onReadable() {
      let chunk;
      while (null !== (chunk = stream.read())) {
      const str = decoder.write(chunk);
      if (str.includes('\n\n')) {
      // Found the header boundary.
      const split = str.split(/\n\n/);
      header += split.shift();
      const remaining = split.join('\n\n');
      const buf = Buffer.from(remaining, 'utf8');
      stream.removeListener('error', callback);
      // Remove the 'readable' listener before unshifting.
      stream.removeListener('readable', onReadable);
      if (buf.length)
      stream.unshift(buf);
      // Now the body of the message can be read from the stream.
      callback(null, header, stream);
      return;
      }
      // Still reading the header.
      header += str;
      }
      }
      } +
      + +

      Unlike push, stream.unshift(chunk) will not +end the reading process by resetting the internal reading state of the stream. +This can cause unexpected results if readable.unshift() is called during a +read (i.e. from within a _read implementation on a +custom stream). Following the call to readable.unshift() with an immediate push will reset the reading state appropriately, +however it is best to simply avoid calling readable.unshift() while in the +process of performing a read.

      +

      Parameters

      • chunk: any

        Chunk of data to unshift onto the read queue. For streams not operating in object mode, chunk must +be a {string}, {Buffer}, {TypedArray}, {DataView} or null. For object mode streams, chunk may be any JavaScript value.

        +
      • Optionalencoding: BufferEncoding

        Encoding of string chunks. Must be a valid Buffer encoding, such as 'utf8' or 'ascii'.

        +

      Returns void

      v0.9.11

      +
    • Prior to Node.js 0.10, streams did not implement the entire node:stream module API as it is currently defined. (See Compatibility for more +information.)

      +

      When using an older Node.js library that emits 'data' events and has a pause method that is advisory only, the readable.wrap() method can be used to create a Readable +stream that uses +the old stream as its data source.

      +

      It will rarely be necessary to use readable.wrap() but the method has been +provided as a convenience for interacting with older Node.js applications and +libraries.

      +
      import { OldReader } from './old-api-module.js';
      import { Readable } from 'node:stream';
      const oreader = new OldReader();
      const myReader = new Readable().wrap(oreader);

      myReader.on('readable', () => {
      myReader.read(); // etc.
      }); +
      + +

      Parameters

      • stream: ReadableStream

        An "old style" readable stream

        +

      Returns this

      v0.9.4

      +
    • Experimental

      Listens once to the abort event on the provided signal.

      +

      Listening to the abort event on abort signals is unsafe and may +lead to resource leaks since another third party with the signal can +call e.stopImmediatePropagation(). Unfortunately Node.js cannot change +this since it would violate the web standard. Additionally, the original +API makes it easy to forget to remove listeners.

      +

      This API allows safely using AbortSignals in Node.js APIs by solving these +two issues by listening to the event such that stopImmediatePropagation does +not prevent the listener from running.

      +

      Returns a disposable so that it may be unsubscribed from more easily.

      +
      import { addAbortListener } from 'node:events';

      function example(signal) {
      let disposable;
      try {
      signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
      disposable = addAbortListener(signal, (e) => {
      // Do something when signal is aborted.
      });
      } finally {
      disposable?.[Symbol.dispose]();
      }
      } +
      + +

      Parameters

      • signal: AbortSignal
      • resource: ((event: Event) => void)
          • (event): void
          • Parameters

            • event: Event

            Returns void

      Returns Disposable

      Disposable that removes the abort listener.

      +

      v20.5.0

      +
    • A utility method for creating Readable Streams out of iterators.

      +

      Parameters

      • iterable: Iterable<any> | AsyncIterable<any>

        Object implementing the Symbol.asyncIterator or Symbol.iterator iterable protocol. Emits an 'error' event if a null value is passed.

        +
      • Optionaloptions: ReadableOptions

        Options provided to new stream.Readable([options]). By default, Readable.from() will set options.objectMode to true, unless this is explicitly opted out by setting options.objectMode to false.

        +

      Returns Readable

      v12.3.0, v10.17.0

      +
    • Experimental

      A utility method for creating a Readable from a web ReadableStream.

      +

      Parameters

      • readableStream: ReadableStream<any>
      • Optionaloptions: Pick<ReadableOptions,
            | "signal"
            | "objectMode"
            | "highWaterMark"
            | "encoding">

      Returns Readable

      v17.0.0

      +
    • Returns a copy of the array of listeners for the event named eventName.

      +

      For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

      +

      For EventTargets this is the only way to get the event listeners for the +event target. 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<DefaultEventMap> | EventTarget
      • name: string | symbol

      Returns Function[]

      v15.2.0, v14.17.0

      +
    • Returns the currently set max amount of listeners.

      +

      For EventEmitters this behaves exactly the same as calling .getMaxListeners on +the emitter.

      +

      For EventTargets this is the only way to get the max event listeners for the +event target. If the number of event handlers on a single EventTarget exceeds +the max set, the EventTarget will print a warning.

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

      {
      const ee = new EventEmitter();
      console.log(getMaxListeners(ee)); // 10
      setMaxListeners(11, ee);
      console.log(getMaxListeners(ee)); // 11
      }
      {
      const et = new EventTarget();
      console.log(getMaxListeners(et)); // 10
      setMaxListeners(11, et);
      console.log(getMaxListeners(et)); // 11
      } +
      + +

      Parameters

      • emitter: EventEmitter<DefaultEventMap> | EventTarget

      Returns number

      v19.9.0

      +
    • Returns whether the stream has been read from or cancelled.

      +

      Parameters

      • stream: Readable | ReadableStream

      Returns boolean

      v16.8.0

      +
    • A class method that returns the number of listeners for the given eventName registered on the given emitter.

      +
      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<DefaultEventMap>

        The emitter to query

        +
      • eventName: string | symbol

        The event name

        +

      Returns number

      v0.9.12

      +

      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'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

      +

      An AbortSignal can be used to cancel waiting on events:

      +
      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()); +
      + +

      Use the close option to specify an array of event names that will end the iteration:

      +
      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);
      ee.emit('close');
      });

      for await (const event of on(ee, 'foo', { close: ['close'] })) {
      console.log(event); // prints ['bar'] [42]
      }
      // the loop will exit after 'close' is emitted
      console.log('done'); // prints 'done' +
      + +

      Parameters

      • emitter: EventEmitter<DefaultEventMap>
      • eventName: string | symbol
      • Optionaloptions: StaticEventEmitterIteratorOptions

      Returns AsyncIterator<any[], any, any>

      An AsyncIterator that iterates eventName events emitted by the emitter

      +

      v13.6.0, v12.16.0

      +
    • Parameters

      • emitter: EventTarget
      • eventName: string
      • Optionaloptions: StaticEventEmitterIteratorOptions

      Returns AsyncIterator<any[], any, any>

    • 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.

      +

      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.

      +
      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. 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:

      +
      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:

      +
      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: EventEmitter<DefaultEventMap>
      • eventName: string | symbol
      • Optionaloptions: StaticEventEmitterOptions

      Returns Promise<any[]>

      v11.13.0, v10.16.0

      +
    • Parameters

      • emitter: EventTarget
      • eventName: string
      • Optionaloptions: StaticEventEmitterOptions

      Returns Promise<any[]>

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

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

      setMaxListeners(5, target, emitter); +
      + +

      Parameters

      • Optionaln: number

        A non-negative number. The maximum number of listeners per EventTarget event.

        +
      • Rest...eventTargets: (EventEmitter<DefaultEventMap> | EventTarget)[]

        Zero or more {EventTarget} or {EventEmitter} instances. If none are specified, n is set as the default max for all newly created {EventTarget} and {EventEmitter} +objects.

        +

      Returns void

      v15.4.0

      +
    • Experimental

      A utility method for creating a web ReadableStream from a Readable.

      +

      Parameters

      • streamReadable: Readable
      • Optionaloptions: {
            strategy?: QueuingStrategy<any>;
        }
        • Optionalstrategy?: QueuingStrategy<any>

      Returns ReadableStream<any>

      v17.0.0

      +
    diff --git a/docs/6.16/classes/GridFSBucketWriteStream.html b/docs/6.16/classes/GridFSBucketWriteStream.html new file mode 100644 index 00000000000..56661a34e99 --- /dev/null +++ b/docs/6.16/classes/GridFSBucketWriteStream.html @@ -0,0 +1,953 @@ +GridFSBucketWriteStream | mongodb

    Class GridFSBucketWriteStream

    A writable stream that enables you to write buffers to GridFS.

    +

    Do not instantiate this class directly. Use openUploadStream() instead.

    +

    Hierarchy

    • Writable
      • GridFSBucketWriteStream

    Properties

    bucket: GridFSBucket
    bufToStore: Buffer

    Space used to store a chunk currently being inserted

    +

    A Collection instance where the file's chunks are stored

    +
    chunkSizeBytes: number

    The number of bytes that each chunk will be limited to

    +
    closed: boolean

    Is true after 'close' has been emitted.

    +

    v18.0.0

    +
    destroyed: boolean

    Is true after writable.destroy() has been called.

    +

    v8.0.0

    +
    done: boolean

    Indicates the stream is finished uploading

    +
    errored: null | Error

    Returns error if the stream has been destroyed with an error.

    +

    v18.0.0

    +
    filename: string

    The name of the file

    +

    A Collection instance where the file's GridFSFile document is stored

    +
    gridFSFile: null | GridFSFile = null

    The document containing information about the inserted file. +This property is defined after the finish event has been emitted. +It will remain null if an error occurs.

    +
    fs.createReadStream('file.txt')
    .pipe(bucket.openUploadStream('file.txt'))
    .on('finish', function () {
    console.log(this.gridFSFile)
    }) +
    + +

    The ObjectId used for the _id field on the GridFSFile document

    +
    length: number

    Accumulates the number of bytes inserted as the stream uploads chunks

    +
    n: number

    Accumulates the number of chunks inserted as the stream uploads file contents

    +

    Options controlling the metadata inserted along with the file

    +
    pos: number

    Tracks the current offset into the buffered bytes being uploaded

    +
    state: {
        aborted: boolean;
        errored: boolean;
        outstandingRequests: number;
        streamEnd: boolean;
    }

    Contains a number of properties indicating the current state of the stream

    +

    Type declaration

    • aborted: boolean

      If set the stream was intentionally aborted

      +
    • errored: boolean

      If set an error occurred during insertion

      +
    • outstandingRequests: number

      Indicates the number of chunks that still need to be inserted to exhaust the current buffered data

      +
    • streamEnd: boolean

      If set the stream has ended

      +
    writable: boolean

    Is true if it is safe to call writable.write(), which means +the stream has not been destroyed, errored, or ended.

    +

    v11.4.0

    +
    writableCorked: number

    Number of times writable.uncork() needs to be +called in order to fully uncork the stream.

    +

    v13.2.0, v12.16.0

    +
    writableEnded: boolean

    Is true after writable.end() has been called. This property +does not indicate whether the data has been flushed, for this use writable.writableFinished instead.

    +

    v12.9.0

    +
    writableFinished: boolean

    Is set to true immediately before the 'finish' event is emitted.

    +

    v12.6.0

    +
    writableHighWaterMark: number

    Return the value of highWaterMark passed when creating this Writable.

    +

    v9.3.0

    +
    writableLength: number

    This property contains the number of bytes (or objects) in the queue +ready to be written. The value provides introspection data regarding +the status of the highWaterMark.

    +

    v9.4.0

    +
    writableNeedDrain: boolean

    Is true if the stream's buffer has been full and stream will emit 'drain'.

    +

    v15.2.0, v14.17.0

    +
    writableObjectMode: boolean

    Getter for the property objectMode of a given Writable stream.

    +

    v12.3.0

    +
    writeConcern?: WriteConcern

    The write concern setting to be used with every insert operation

    +
    captureRejections: boolean

    Value: boolean

    +

    Change the default captureRejections option on all new EventEmitter objects.

    +

    v13.4.0, v12.16.0

    +
    captureRejectionSymbol: typeof captureRejectionSymbol

    Value: Symbol.for('nodejs.rejection')

    +

    See how to write a custom rejection handler.

    +

    v13.4.0, v12.16.0

    +
    defaultMaxListeners: number

    By default, a maximum of 10 listeners can be registered for any single +event. This limit can be changed for individual EventEmitter instances +using the emitter.setMaxListeners(n) method. To change the default +for allEventEmitter instances, the events.defaultMaxListeners property +can be used. If this value is not a positive number, a RangeError is thrown.

    +

    Take caution when setting the events.defaultMaxListeners because the +change affects all EventEmitter instances, including those created before +the change is made. However, calling emitter.setMaxListeners(n) still has +precedence over events.defaultMaxListeners.

    +

    This is not a hard limit. The EventEmitter instance will allow +more listeners to be added but will output a trace warning to stderr indicating +that a "possible EventEmitter memory leak" has been detected. For any single +EventEmitter, the emitter.getMaxListeners() and emitter.setMaxListeners() methods can be used to +temporarily avoid this warning:

    +
    import { EventEmitter } from 'node:events';
    const emitter = new EventEmitter();
    emitter.setMaxListeners(emitter.getMaxListeners() + 1);
    emitter.once('event', () => {
    // do stuff
    emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
    }); +
    + +

    The --trace-warnings command-line flag can be used to display the +stack trace for such warnings.

    +

    The emitted warning can be inspected with process.on('warning') and will +have the additional emitter, type, and count properties, referring to +the event emitter instance, the event's name and the number of attached +listeners, respectively. +Its name property is set to 'MaxListenersExceededWarning'.

    +

    v0.11.2

    +
    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.

    +

    v13.6.0, v12.17.0

    +

    Methods

    • Parameters

      • error: null | Error
      • callback: ((error?: null | Error) => void)
          • (error?): void
          • Parameters

            • Optionalerror: null | Error

            Returns void

      Returns void

    • Parameters

      • chunks: {
            chunk: any;
            encoding: BufferEncoding;
        }[]
      • callback: ((error?: null | Error) => void)
          • (error?): void
          • Parameters

            • Optionalerror: null | Error

            Returns void

      Returns void

    • Type Parameters

      • K

      Parameters

      • error: Error
      • event: string | symbol
      • Rest...args: AnyRest

      Returns void

    • Places this write stream into an aborted state (all future writes fail) +and deletes all chunks that have already been written.

      +

      Returns Promise<void>

    • Event emitter +The defined events on documents including:

      +
        +
      1. close
      2. +
      3. drain
      4. +
      5. error
      6. +
      7. finish
      8. +
      9. pipe
      10. +
      11. unpipe
      12. +
      +

      Parameters

      • event: "close"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

    • Alias for emitter.on(eventName, listener).

      +

      Parameters

      • event: "drain"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      +
    • Alias for emitter.on(eventName, listener).

      +

      Parameters

      • event: "error"
      • listener: ((err: Error) => void)
          • (err): void
          • Parameters

            • err: Error

            Returns void

      Returns this

      v0.1.26

      +
    • Alias for emitter.on(eventName, listener).

      +

      Parameters

      • event: "finish"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      +
    • Alias for emitter.on(eventName, listener).

      +

      Parameters

      • event: "pipe"
      • listener: ((src: Readable) => void)
          • (src): void
          • Parameters

            • src: Readable

            Returns void

      Returns this

      v0.1.26

      +
    • Alias for emitter.on(eventName, listener).

      +

      Parameters

      • event: "unpipe"
      • listener: ((src: Readable) => void)
          • (src): void
          • Parameters

            • src: Readable

            Returns void

      Returns this

      v0.1.26

      +
    • Alias for emitter.on(eventName, listener).

      +

      Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)
          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v0.1.26

      +
    • Type Parameters

      • T extends ReadableStream

      Parameters

      • stream:
            | ComposeFnParam
            | T
            | Iterable<T>
            | AsyncIterable<T>
      • Optionaloptions: {
            signal: AbortSignal;
        }
        • signal: AbortSignal

      Returns T

    • The writable.cork() method forces all written data to be buffered in memory. +The buffered data will be flushed when either the uncork or end methods are called.

      +

      The primary intent of writable.cork() is to accommodate a situation in which +several small chunks are written to the stream in rapid succession. Instead of +immediately forwarding them to the underlying destination, writable.cork() buffers all the chunks until writable.uncork() is called, which will pass them +all to writable._writev(), if present. This prevents a head-of-line blocking +situation where data is being buffered while waiting for the first small chunk +to be processed. However, use of writable.cork() without implementing writable._writev() may have an adverse effect on throughput.

      +

      See also: writable.uncork(), writable._writev().

      +

      Returns void

      v0.11.2

      +
    • Destroy the stream. Optionally emit an 'error' event, and emit a 'close' event (unless emitClose is set to false). After this call, the writable +stream has ended and subsequent calls to write() or end() will result in +an ERR_STREAM_DESTROYED error. +This is a destructive and immediate way to destroy a stream. Previous calls to write() may not have drained, and may trigger an ERR_STREAM_DESTROYED error. +Use end() instead of destroy if data should flush before close, or wait for +the 'drain' event before destroying the stream.

      +

      Once destroy() has been called any further calls will be a no-op and no +further errors except from _destroy() may be emitted as 'error'.

      +

      Implementors should not override this method, +but instead implement writable._destroy().

      +

      Parameters

      • Optionalerror: Error

        Optional, an error to emit with 'error' event.

        +

      Returns this

      v8.0.0

      +
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +to each.

      +

      Returns true if the event had listeners, false otherwise.

      +
      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener +
      + +

      Parameters

      • event: "close"

      Returns boolean

      v0.1.26

      +
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +to each.

      +

      Returns true if the event had listeners, false otherwise.

      +
      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener +
      + +

      Parameters

      • event: "drain"

      Returns boolean

      v0.1.26

      +
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +to each.

      +

      Returns true if the event had listeners, false otherwise.

      +
      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener +
      + +

      Parameters

      • event: "error"
      • err: Error

      Returns boolean

      v0.1.26

      +
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +to each.

      +

      Returns true if the event had listeners, false otherwise.

      +
      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener +
      + +

      Parameters

      • event: "finish"

      Returns boolean

      v0.1.26

      +
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +to each.

      +

      Returns true if the event had listeners, false otherwise.

      +
      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener +
      + +

      Parameters

      • event: "pipe"
      • src: Readable

      Returns boolean

      v0.1.26

      +
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +to each.

      +

      Returns true if the event had listeners, false otherwise.

      +
      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener +
      + +

      Parameters

      • event: "unpipe"
      • src: Readable

      Returns boolean

      v0.1.26

      +
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +to each.

      +

      Returns true if the event had listeners, false otherwise.

      +
      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener +
      + +

      Parameters

      • event: string | symbol
      • Rest...args: any[]

      Returns boolean

      v0.1.26

      +
    • Calling the writable.end() method signals that no more data will be written +to the Writable. The optional chunk and encoding arguments allow one +final additional chunk of data to be written immediately before closing the +stream.

      +

      Calling the write method after calling end will raise an error.

      +
      // Write 'hello, ' and then end with 'world!'.
      import fs from 'node:fs';
      const file = fs.createWriteStream('example.txt');
      file.write('hello, ');
      file.end('world!');
      // Writing more now is not allowed! +
      + +

      Parameters

      • Optionalcb: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.9.4

      +
    • Parameters

      • chunk: any
      • Optionalcb: (() => void)
          • (): void
          • Returns void

      Returns this

    • Parameters

      • chunk: any
      • encoding: BufferEncoding
      • Optionalcb: (() => void)
          • (): void
          • Returns void

      Returns this

    • Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

      +
      import { EventEmitter } from 'node:events';

      const myEE = new EventEmitter();
      myEE.on('foo', () => {});
      myEE.on('bar', () => {});

      const sym = Symbol('symbol');
      myEE.on(sym, () => {});

      console.log(myEE.eventNames());
      // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
      + +

      Returns (string | symbol)[]

      v6.0.0

      +
    • Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to EventEmitter.defaultMaxListeners.

      +

      Returns number

      v1.0.0

      +
    • Returns the number of listeners listening for the event named eventName. +If listener is provided, it will return how many times the listener is found +in the list of the listeners of the event.

      +

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

        The name of the event being listened for

        +
      • Optionallistener: Function

        The event handler function

        +

      Returns number

      v3.2.0

      +
    • Returns a copy of the array of listeners for the event named eventName.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      });
      console.log(util.inspect(server.listeners('connection')));
      // Prints: [ [Function] ] +
      + +

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

      Returns Function[]

      v0.1.26

      +
    • Alias for emitter.removeListener().

      +

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol
      • listener: ((...args: any[]) => void)
          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v10.0.0

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: "close"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: "drain"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: "error"
      • listener: ((err: Error) => void)

        The callback function

        +
          • (err): void
          • Parameters

            • err: Error

            Returns void

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: "finish"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: "pipe"
      • listener: ((src: Readable) => void)

        The callback function

        +
          • (src): void
          • Parameters

            • src: Readable

            Returns void

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: "unpipe"
      • listener: ((src: Readable) => void)

        The callback function

        +
          • (src): void
          • Parameters

            • src: Readable

            Returns void

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)

        The callback function

        +
          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v0.1.101

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: "close"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: "drain"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: "error"
      • listener: ((err: Error) => void)

        The callback function

        +
          • (err): void
          • Parameters

            • err: Error

            Returns void

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: "finish"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: "pipe"
      • listener: ((src: Readable) => void)

        The callback function

        +
          • (src): void
          • Parameters

            • src: Readable

            Returns void

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: "unpipe"
      • listener: ((src: Readable) => void)

        The callback function

        +
          • (src): void
          • Parameters

            • src: Readable

            Returns void

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)

        The callback function

        +
          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v0.3.0

      +
    • Type Parameters

      • T extends WritableStream

      Parameters

      • destination: T
      • Optionaloptions: {
            end?: boolean;
        }
        • Optionalend?: boolean

      Returns T

    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "close"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "drain"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "error"
      • listener: ((err: Error) => void)

        The callback function

        +
          • (err): void
          • Parameters

            • err: Error

            Returns void

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "finish"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "pipe"
      • listener: ((src: Readable) => void)

        The callback function

        +
          • (src): void
          • Parameters

            • src: Readable

            Returns void

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "unpipe"
      • listener: ((src: Readable) => void)

        The callback function

        +
          • (src): void
          • Parameters

            • src: Readable

            Returns void

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)

        The callback function

        +
          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "close"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "drain"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "error"
      • listener: ((err: Error) => void)

        The callback function

        +
          • (err): void
          • Parameters

            • err: Error

            Returns void

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "finish"
      • listener: (() => void)

        The callback function

        +
          • (): void
          • Returns void

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "pipe"
      • listener: ((src: Readable) => void)

        The callback function

        +
          • (src): void
          • Parameters

            • src: Readable

            Returns void

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "unpipe"
      • listener: ((src: Readable) => void)

        The callback function

        +
          • (src): void
          • Parameters

            • src: Readable

            Returns void

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)

        The callback function

        +
          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v6.0.0

      +
    • Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

      +
      import { EventEmitter } from 'node:events';
      const emitter = new EventEmitter();
      emitter.once('log', () => console.log('log once'));

      // Returns a new Array with a function `onceWrapper` which has a property
      // `listener` which contains the original listener bound above
      const listeners = emitter.rawListeners('log');
      const logFnWrapper = listeners[0];

      // Logs "log once" to the console and does not unbind the `once` event
      logFnWrapper.listener();

      // Logs "log once" to the console and removes the listener
      logFnWrapper();

      emitter.on('log', () => console.log('log persistently'));
      // Will return a new Array with a single function bound by `.on()` above
      const newListeners = emitter.rawListeners('log');

      // Logs "log persistently" twice
      newListeners[0]();
      emitter.emit('log'); +
      + +

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

      Returns Function[]

      v9.4.0

      +
    • Removes all listeners, or those of the specified eventName.

      +

      It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • OptionaleventName: string | symbol

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "close"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "drain"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "error"
      • listener: ((err: Error) => void)
          • (err): void
          • Parameters

            • err: Error

            Returns void

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "finish"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "pipe"
      • listener: ((src: Readable) => void)
          • (src): void
          • Parameters

            • src: Readable

            Returns void

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: "unpipe"
      • listener: ((src: Readable) => void)
          • (src): void
          • Parameters

            • src: Readable

            Returns void

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)
          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v0.1.26

      +
    • The writable.setDefaultEncoding() method sets the default encoding for a Writable stream.

      +

      Parameters

      • encoding: BufferEncoding

        The new default encoding

        +

      Returns this

      v0.11.15

      +
    • By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set to Infinity (or 0) to indicate an unlimited number of listeners.

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • n: number

      Returns this

      v0.3.5

      +
    • The writable.uncork() method flushes all data buffered since cork was called.

      +

      When using writable.cork() and writable.uncork() to manage the buffering +of writes to a stream, defer calls to writable.uncork() using process.nextTick(). Doing so allows batching of all writable.write() calls that occur within a given Node.js event +loop phase.

      +
      stream.cork();
      stream.write('some ');
      stream.write('data ');
      process.nextTick(() => stream.uncork()); +
      + +

      If the writable.cork() method is called multiple times on a stream, the +same number of calls to writable.uncork() must be called to flush the buffered +data.

      +
      stream.cork();
      stream.write('some ');
      stream.cork();
      stream.write('data ');
      process.nextTick(() => {
      stream.uncork();
      // The data will not be flushed until uncork() is called a second time.
      stream.uncork();
      }); +
      + +

      See also: writable.cork().

      +

      Returns void

      v0.11.2

      +
    • The writable.write() method writes some data to the stream, and calls the +supplied callback once the data has been fully handled. If an error +occurs, the callback will be called with the error as its +first argument. The callback is called asynchronously and before 'error' is +emitted.

      +

      The return value is true if the internal buffer is less than the highWaterMark configured when the stream was created after admitting chunk. +If false is returned, further attempts to write data to the stream should +stop until the 'drain' event is emitted.

      +

      While a stream is not draining, calls to write() will buffer chunk, and +return false. Once all currently buffered chunks are drained (accepted for +delivery by the operating system), the 'drain' event will be emitted. +Once write() returns false, do not write more chunks +until the 'drain' event is emitted. While calling write() on a stream that +is not draining is allowed, Node.js will buffer all written chunks until +maximum memory usage occurs, at which point it will abort unconditionally. +Even before it aborts, high memory usage will cause poor garbage collector +performance and high RSS (which is not typically released back to the system, +even after the memory is no longer required). Since TCP sockets may never +drain if the remote peer does not read the data, writing a socket that is +not draining may lead to a remotely exploitable vulnerability.

      +

      Writing data while the stream is not draining is particularly +problematic for a Transform, because the Transform streams are paused +by default until they are piped or a 'data' or 'readable' event handler +is added.

      +

      If the data to be written can be generated or fetched on demand, it is +recommended to encapsulate the logic into a Readable and use pipe. However, if calling write() is preferred, it is +possible to respect backpressure and avoid memory issues using the 'drain' event:

      +
      function write(data, cb) {
      if (!stream.write(data)) {
      stream.once('drain', cb);
      } else {
      process.nextTick(cb);
      }
      }

      // Wait for cb to be called before doing any other write.
      write('hello', () => {
      console.log('Write completed, do more writes now.');
      }); +
      + +

      A Writable stream in object mode will always ignore the encoding argument.

      +

      Parameters

      • chunk: any

        Optional data to write. For streams not operating in object mode, chunk must be a {string}, {Buffer}, +{TypedArray} or {DataView}. For object mode streams, chunk may be any JavaScript value other than null.

        +
      • Optionalcallback: ((error: undefined | null | Error) => void)

        Callback for when this chunk of data is flushed.

        +
          • (error): void
          • Parameters

            • error: undefined | null | Error

            Returns void

      Returns boolean

      false if the stream wishes for the calling code to wait for the 'drain' event to be emitted before continuing to write additional data; otherwise true.

      +

      v0.9.4

      +
    • Parameters

      • chunk: any
      • encoding: BufferEncoding
      • Optionalcallback: ((error: undefined | null | Error) => void)
          • (error): void
          • Parameters

            • error: undefined | null | Error

            Returns void

      Returns boolean

    • Experimental

      Listens once to the abort event on the provided signal.

      +

      Listening to the abort event on abort signals is unsafe and may +lead to resource leaks since another third party with the signal can +call e.stopImmediatePropagation(). Unfortunately Node.js cannot change +this since it would violate the web standard. Additionally, the original +API makes it easy to forget to remove listeners.

      +

      This API allows safely using AbortSignals in Node.js APIs by solving these +two issues by listening to the event such that stopImmediatePropagation does +not prevent the listener from running.

      +

      Returns a disposable so that it may be unsubscribed from more easily.

      +
      import { addAbortListener } from 'node:events';

      function example(signal) {
      let disposable;
      try {
      signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
      disposable = addAbortListener(signal, (e) => {
      // Do something when signal is aborted.
      });
      } finally {
      disposable?.[Symbol.dispose]();
      }
      } +
      + +

      Parameters

      • signal: AbortSignal
      • resource: ((event: Event) => void)
          • (event): void
          • Parameters

            • event: Event

            Returns void

      Returns Disposable

      Disposable that removes the abort listener.

      +

      v20.5.0

      +
    • Experimental

      A utility method for creating a Writable from a web WritableStream.

      +

      Parameters

      • writableStream: WritableStream<any>
      • Optionaloptions: Pick<WritableOptions,
            | "signal"
            | "objectMode"
            | "highWaterMark"
            | "decodeStrings">

      Returns Writable

      v17.0.0

      +
    • Returns a copy of the array of listeners for the event named eventName.

      +

      For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

      +

      For EventTargets this is the only way to get the event listeners for the +event target. 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<DefaultEventMap> | EventTarget
      • name: string | symbol

      Returns Function[]

      v15.2.0, v14.17.0

      +
    • Returns the currently set max amount of listeners.

      +

      For EventEmitters this behaves exactly the same as calling .getMaxListeners on +the emitter.

      +

      For EventTargets this is the only way to get the max event listeners for the +event target. If the number of event handlers on a single EventTarget exceeds +the max set, the EventTarget will print a warning.

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

      {
      const ee = new EventEmitter();
      console.log(getMaxListeners(ee)); // 10
      setMaxListeners(11, ee);
      console.log(getMaxListeners(ee)); // 11
      }
      {
      const et = new EventTarget();
      console.log(getMaxListeners(et)); // 10
      setMaxListeners(11, et);
      console.log(getMaxListeners(et)); // 11
      } +
      + +

      Parameters

      • emitter: EventEmitter<DefaultEventMap> | EventTarget

      Returns number

      v19.9.0

      +
    • A class method that returns the number of listeners for the given eventName registered on the given emitter.

      +
      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<DefaultEventMap>

        The emitter to query

        +
      • eventName: string | symbol

        The event name

        +

      Returns number

      v0.9.12

      +

      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'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

      +

      An AbortSignal can be used to cancel waiting on events:

      +
      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()); +
      + +

      Use the close option to specify an array of event names that will end the iteration:

      +
      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);
      ee.emit('close');
      });

      for await (const event of on(ee, 'foo', { close: ['close'] })) {
      console.log(event); // prints ['bar'] [42]
      }
      // the loop will exit after 'close' is emitted
      console.log('done'); // prints 'done' +
      + +

      Parameters

      • emitter: EventEmitter<DefaultEventMap>
      • eventName: string | symbol
      • Optionaloptions: StaticEventEmitterIteratorOptions

      Returns AsyncIterator<any[], any, any>

      An AsyncIterator that iterates eventName events emitted by the emitter

      +

      v13.6.0, v12.16.0

      +
    • Parameters

      • emitter: EventTarget
      • eventName: string
      • Optionaloptions: StaticEventEmitterIteratorOptions

      Returns AsyncIterator<any[], any, any>

    • 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.

      +

      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.

      +
      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. 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:

      +
      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:

      +
      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: EventEmitter<DefaultEventMap>
      • eventName: string | symbol
      • Optionaloptions: StaticEventEmitterOptions

      Returns Promise<any[]>

      v11.13.0, v10.16.0

      +
    • Parameters

      • emitter: EventTarget
      • eventName: string
      • Optionaloptions: StaticEventEmitterOptions

      Returns Promise<any[]>

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

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

      setMaxListeners(5, target, emitter); +
      + +

      Parameters

      • Optionaln: number

        A non-negative number. The maximum number of listeners per EventTarget event.

        +
      • Rest...eventTargets: (EventEmitter<DefaultEventMap> | EventTarget)[]

        Zero or more {EventTarget} or {EventEmitter} instances. If none are specified, n is set as the default max for all newly created {EventTarget} and {EventEmitter} +objects.

        +

      Returns void

      v15.4.0

      +
    • Experimental

      A utility method for creating a web WritableStream from a Writable.

      +

      Parameters

      • streamWritable: Writable

      Returns WritableStream<any>

      v17.0.0

      +
    diff --git a/docs/6.16/classes/HostAddress.html b/docs/6.16/classes/HostAddress.html new file mode 100644 index 00000000000..097547d6f48 --- /dev/null +++ b/docs/6.16/classes/HostAddress.html @@ -0,0 +1,12 @@ +HostAddress | mongodb

    Class HostAddress

    Constructors

    Properties

    host: undefined | string = undefined
    isIPv6: boolean = false
    port: undefined | number = undefined
    socketPath: undefined | string = undefined

    Methods

    • Returns {
          host: string;
          port: number;
      }

      • host: string
      • port: number
    diff --git a/docs/6.16/classes/ListCollectionsCursor.html b/docs/6.16/classes/ListCollectionsCursor.html new file mode 100644 index 00000000000..263eae58a63 --- /dev/null +++ b/docs/6.16/classes/ListCollectionsCursor.html @@ -0,0 +1,513 @@ +ListCollectionsCursor | mongodb

    Class ListCollectionsCursor<T>

    Type Parameters

    Hierarchy (view full)

    Constructors

    Properties

    [asyncDispose]: (() => Promise<void>)

    An alias for AbstractCursor.close|AbstractCursor.close().

    +
    filter: Document
    parent: Db
    signal: undefined | AbortSignal
    captureRejections: boolean

    Value: boolean

    +

    Change the default captureRejections option on all new EventEmitter objects.

    +

    v13.4.0, v12.16.0

    +
    captureRejectionSymbol: typeof captureRejectionSymbol

    Value: Symbol.for('nodejs.rejection')

    +

    See how to write a custom rejection handler.

    +

    v13.4.0, v12.16.0

    +
    CLOSE: "close" = ...
    defaultMaxListeners: number

    By default, a maximum of 10 listeners can be registered for any single +event. This limit can be changed for individual EventEmitter instances +using the emitter.setMaxListeners(n) method. To change the default +for allEventEmitter instances, the events.defaultMaxListeners property +can be used. If this value is not a positive number, a RangeError is thrown.

    +

    Take caution when setting the events.defaultMaxListeners because the +change affects all EventEmitter instances, including those created before +the change is made. However, calling emitter.setMaxListeners(n) still has +precedence over events.defaultMaxListeners.

    +

    This is not a hard limit. The EventEmitter instance will allow +more listeners to be added but will output a trace warning to stderr indicating +that a "possible EventEmitter memory leak" has been detected. For any single +EventEmitter, the emitter.getMaxListeners() and emitter.setMaxListeners() methods can be used to +temporarily avoid this warning:

    +
    import { EventEmitter } from 'node:events';
    const emitter = new EventEmitter();
    emitter.setMaxListeners(emitter.getMaxListeners() + 1);
    emitter.once('event', () => {
    // do stuff
    emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
    }); +
    + +

    The --trace-warnings command-line flag can be used to display the +stack trace for such warnings.

    +

    The emitted warning can be inspected with process.on('warning') and will +have the additional emitter, type, and count properties, referring to +the event emitter instance, the event's name and the number of attached +listeners, respectively. +Its name property is set to 'MaxListenersExceededWarning'.

    +

    v0.11.2

    +
    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.

    +

    v13.6.0, v12.17.0

    +

    Accessors

    • get closed(): boolean
    • The cursor is closed and all remaining locally buffered documents have been iterated.

      +

      Returns boolean

    • get id(): undefined | Long
    • The cursor has no id until it receives a response from the initial cursor creating command.

      +

      It is non-zero for as long as the database has an open cursor.

      +

      The initiating command may receive a zero id if the entire result is in the firstBatch.

      +

      Returns undefined | Long

    • get killed(): boolean
    • A killCursors command was attempted on this cursor. +This is performed if the cursor id is non zero.

      +

      Returns boolean

    Methods

    • Type Parameters

      • K

      Parameters

      • error: Error
      • event: string | symbol
      • Rest...args: AnyRest

      Returns void

    • 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' -.

        +
      • value: boolean

        The flag boolean value.

        +

      Returns this

    • Frees any client-side resources used by the cursor.

      +

      Parameters

      • Optionaloptions: {
            timeoutMS?: number;
        }
        • OptionaltimeoutMS?: number

      Returns Promise<void>

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +to each.

      +

      Returns true if the event had listeners, false otherwise.

      +
      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener +
      + +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns boolean

      v0.1.26

      +
    • Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

      +
      import { EventEmitter } from 'node:events';

      const myEE = new EventEmitter();
      myEE.on('foo', () => {});
      myEE.on('bar', () => {});

      const sym = Symbol('symbol');
      myEE.on(sym, () => {});

      console.log(myEE.eventNames());
      // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
      + +

      Returns string[]

      v6.0.0

      +
    • Iterates over all the documents for this cursor using the iterator, callback pattern.

      +

      If the iterator returns false, iteration will stop.

      +

      Parameters

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

        The iteration callback.

        +
          • (doc): boolean | void
          • Parameters

            • doc: T

            Returns boolean | void

      Returns Promise<void>

        +
      • Will be removed in a future release. Use for await...of instead.
      • +
      +
    • Returns the number of listeners listening for the event named eventName. +If listener is provided, it will return how many times the listener is found +in the list of the listeners of the event.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns number

      v3.2.0

      +
    • 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 = any

      Parameters

      • transform: ((doc: T) => T)

        The mapping transformation method.

        +
          • (doc): T
          • Parameters

            • doc: T

            Returns T

      Returns AbstractCursor<T, AbstractCursorEvents>

      Note Cursors use null internally to indicate that there are no more documents in the cursor. Providing a mapping +function that maps values to null will result in the cursor closing itself before it has finished iterating +all documents. 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. +
      + +

      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. +Take note of the following 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 a maxTimeMS on the cursor query, allowing for hard timeout limits on queries (Only supported on MongoDB 2.6 or higher)

      +

      Parameters

      • value: number

        Number of milliseconds to wait before aborting the query.

        +

      Returns this

    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      Returns this

      v0.1.101

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      Returns this

      v0.3.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v6.0.0

      +
    • Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

      +
      import { EventEmitter } from 'node:events';
      const emitter = new EventEmitter();
      emitter.once('log', () => console.log('log once'));

      // Returns a new Array with a function `onceWrapper` which has a property
      // `listener` which contains the original listener bound above
      const listeners = emitter.rawListeners('log');
      const logFnWrapper = listeners[0];

      // Logs "log once" to the console and does not unbind the `once` event
      logFnWrapper.listener();

      // Logs "log once" to the console and removes the listener
      logFnWrapper();

      emitter.on('log', () => console.log('log persistently'));
      // Will return a new Array with a single function bound by `.on()` above
      const newListeners = emitter.rawListeners('log');

      // Logs "log persistently" twice
      newListeners[0]();
      emitter.emit('log'); +
      + +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns AbstractCursorEvents[EventKey][]

      v9.4.0

      +
    • Removes all listeners, or those of the specified eventName.

      +

      It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      • Optionalevent: string | symbol | EventKey

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v0.1.26

      +
    • 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

    • By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set to Infinity (or 0) to indicate an unlimited number of listeners.

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • n: number

      Returns this

      v0.3.5

      +
    • 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.

      +

      Returns Promise<T[]>

    • Experimental

      Listens once to the abort event on the provided signal.

      +

      Listening to the abort event on abort signals is unsafe and may +lead to resource leaks since another third party with the signal can +call e.stopImmediatePropagation(). Unfortunately Node.js cannot change +this since it would violate the web standard. Additionally, the original +API makes it easy to forget to remove listeners.

      +

      This API allows safely using AbortSignals in Node.js APIs by solving these +two issues by listening to the event such that stopImmediatePropagation does +not prevent the listener from running.

      +

      Returns a disposable so that it may be unsubscribed from more easily.

      +
      import { addAbortListener } from 'node:events';

      function example(signal) {
      let disposable;
      try {
      signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
      disposable = addAbortListener(signal, (e) => {
      // Do something when signal is aborted.
      });
      } finally {
      disposable?.[Symbol.dispose]();
      }
      } +
      + +

      Parameters

      • signal: AbortSignal
      • resource: ((event: Event) => void)
          • (event): void
          • Parameters

            • event: Event

            Returns void

      Returns Disposable

      Disposable that removes the abort listener.

      +

      v20.5.0

      +
    • Returns a copy of the array of listeners for the event named eventName.

      +

      For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

      +

      For EventTargets this is the only way to get the event listeners for the +event target. 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<DefaultEventMap> | EventTarget
      • name: string | symbol

      Returns Function[]

      v15.2.0, v14.17.0

      +
    • Returns the currently set max amount of listeners.

      +

      For EventEmitters this behaves exactly the same as calling .getMaxListeners on +the emitter.

      +

      For EventTargets this is the only way to get the max event listeners for the +event target. If the number of event handlers on a single EventTarget exceeds +the max set, the EventTarget will print a warning.

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

      {
      const ee = new EventEmitter();
      console.log(getMaxListeners(ee)); // 10
      setMaxListeners(11, ee);
      console.log(getMaxListeners(ee)); // 11
      }
      {
      const et = new EventTarget();
      console.log(getMaxListeners(et)); // 10
      setMaxListeners(11, et);
      console.log(getMaxListeners(et)); // 11
      } +
      + +

      Parameters

      • emitter: EventEmitter<DefaultEventMap> | EventTarget

      Returns number

      v19.9.0

      +
    • A class method that returns the number of listeners for the given eventName registered on the given emitter.

      +
      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<DefaultEventMap>

        The emitter to query

        +
      • eventName: string | symbol

        The event name

        +

      Returns number

      v0.9.12

      +

      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'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

      +

      An AbortSignal can be used to cancel waiting on events:

      +
      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()); +
      + +

      Use the close option to specify an array of event names that will end the iteration:

      +
      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);
      ee.emit('close');
      });

      for await (const event of on(ee, 'foo', { close: ['close'] })) {
      console.log(event); // prints ['bar'] [42]
      }
      // the loop will exit after 'close' is emitted
      console.log('done'); // prints 'done' +
      + +

      Parameters

      • emitter: EventEmitter<DefaultEventMap>
      • eventName: string | symbol
      • Optionaloptions: StaticEventEmitterIteratorOptions

      Returns AsyncIterator<any[], any, any>

      An AsyncIterator that iterates eventName events emitted by the emitter

      +

      v13.6.0, v12.16.0

      +
    • Parameters

      • emitter: EventTarget
      • eventName: string
      • Optionaloptions: StaticEventEmitterIteratorOptions

      Returns AsyncIterator<any[], any, any>

    • 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.

      +

      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.

      +
      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. 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:

      +
      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:

      +
      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: EventEmitter<DefaultEventMap>
      • eventName: string | symbol
      • Optionaloptions: StaticEventEmitterOptions

      Returns Promise<any[]>

      v11.13.0, v10.16.0

      +
    • Parameters

      • emitter: EventTarget
      • eventName: string
      • Optionaloptions: StaticEventEmitterOptions

      Returns Promise<any[]>

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

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

      setMaxListeners(5, target, emitter); +
      + +

      Parameters

      • Optionaln: number

        A non-negative number. The maximum number of listeners per EventTarget event.

        +
      • Rest...eventTargets: (EventEmitter<DefaultEventMap> | EventTarget)[]

        Zero or more {EventTarget} or {EventEmitter} instances. If none are specified, n is set as the default max for all newly created {EventTarget} and {EventEmitter} +objects.

        +

      Returns void

      v15.4.0

      +
    diff --git a/docs/6.16/classes/ListIndexesCursor.html b/docs/6.16/classes/ListIndexesCursor.html new file mode 100644 index 00000000000..b3904d442ed --- /dev/null +++ b/docs/6.16/classes/ListIndexesCursor.html @@ -0,0 +1,512 @@ +ListIndexesCursor | mongodb

    Class ListIndexesCursor

    Hierarchy (view full)

    Constructors

    Properties

    [asyncDispose]: (() => Promise<void>)

    An alias for AbstractCursor.close|AbstractCursor.close().

    +
    signal: undefined | AbortSignal
    captureRejections: boolean

    Value: boolean

    +

    Change the default captureRejections option on all new EventEmitter objects.

    +

    v13.4.0, v12.16.0

    +
    captureRejectionSymbol: typeof captureRejectionSymbol

    Value: Symbol.for('nodejs.rejection')

    +

    See how to write a custom rejection handler.

    +

    v13.4.0, v12.16.0

    +
    CLOSE: "close" = ...
    defaultMaxListeners: number

    By default, a maximum of 10 listeners can be registered for any single +event. This limit can be changed for individual EventEmitter instances +using the emitter.setMaxListeners(n) method. To change the default +for allEventEmitter instances, the events.defaultMaxListeners property +can be used. If this value is not a positive number, a RangeError is thrown.

    +

    Take caution when setting the events.defaultMaxListeners because the +change affects all EventEmitter instances, including those created before +the change is made. However, calling emitter.setMaxListeners(n) still has +precedence over events.defaultMaxListeners.

    +

    This is not a hard limit. The EventEmitter instance will allow +more listeners to be added but will output a trace warning to stderr indicating +that a "possible EventEmitter memory leak" has been detected. For any single +EventEmitter, the emitter.getMaxListeners() and emitter.setMaxListeners() methods can be used to +temporarily avoid this warning:

    +
    import { EventEmitter } from 'node:events';
    const emitter = new EventEmitter();
    emitter.setMaxListeners(emitter.getMaxListeners() + 1);
    emitter.once('event', () => {
    // do stuff
    emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
    }); +
    + +

    The --trace-warnings command-line flag can be used to display the +stack trace for such warnings.

    +

    The emitted warning can be inspected with process.on('warning') and will +have the additional emitter, type, and count properties, referring to +the event emitter instance, the event's name and the number of attached +listeners, respectively. +Its name property is set to 'MaxListenersExceededWarning'.

    +

    v0.11.2

    +
    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.

    +

    v13.6.0, v12.17.0

    +

    Accessors

    • get closed(): boolean
    • The cursor is closed and all remaining locally buffered documents have been iterated.

      +

      Returns boolean

    • get id(): undefined | Long
    • The cursor has no id until it receives a response from the initial cursor creating command.

      +

      It is non-zero for as long as the database has an open cursor.

      +

      The initiating command may receive a zero id if the entire result is in the firstBatch.

      +

      Returns undefined | Long

    • get killed(): boolean
    • A killCursors command was attempted on this cursor. +This is performed if the cursor id is non zero.

      +

      Returns boolean

    Methods

    • Type Parameters

      • K

      Parameters

      • error: Error
      • event: string | symbol
      • Rest...args: AnyRest

      Returns void

    • 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' -.

        +
      • value: boolean

        The flag boolean value.

        +

      Returns this

    • Frees any client-side resources used by the cursor.

      +

      Parameters

      • Optionaloptions: {
            timeoutMS?: number;
        }
        • OptionaltimeoutMS?: number

      Returns Promise<void>

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +to each.

      +

      Returns true if the event had listeners, false otherwise.

      +
      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener +
      + +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns boolean

      v0.1.26

      +
    • Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

      +
      import { EventEmitter } from 'node:events';

      const myEE = new EventEmitter();
      myEE.on('foo', () => {});
      myEE.on('bar', () => {});

      const sym = Symbol('symbol');
      myEE.on(sym, () => {});

      console.log(myEE.eventNames());
      // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
      + +

      Returns string[]

      v6.0.0

      +
    • Iterates over all the documents for this cursor using the iterator, callback pattern.

      +

      If the iterator returns false, iteration will stop.

      +

      Parameters

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

        The iteration callback.

        +
          • (doc): boolean | void
          • Parameters

            • doc: any

            Returns boolean | void

      Returns Promise<void>

        +
      • Will be removed in a future release. Use for await...of instead.
      • +
      +
    • Returns the number of listeners listening for the event named eventName. +If listener is provided, it will return how many times the listener is found +in the list of the listeners of the event.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns number

      v3.2.0

      +
    • 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 = any

      Parameters

      • transform: ((doc: any) => T)

        The mapping transformation method.

        +
          • (doc): T
          • Parameters

            • doc: any

            Returns T

      Returns AbstractCursor<T, AbstractCursorEvents>

      Note Cursors use null internally to indicate that there are no more documents in the cursor. Providing a mapping +function that maps values to null will result in the cursor closing itself before it has finished iterating +all documents. 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. +
      + +

      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. +Take note of the following 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 a maxTimeMS on the cursor query, allowing for hard timeout limits on queries (Only supported on MongoDB 2.6 or higher)

      +

      Parameters

      • value: number

        Number of milliseconds to wait before aborting the query.

        +

      Returns this

    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      Returns this

      v0.1.101

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      Returns this

      v0.3.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v6.0.0

      +
    • Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

      +
      import { EventEmitter } from 'node:events';
      const emitter = new EventEmitter();
      emitter.once('log', () => console.log('log once'));

      // Returns a new Array with a function `onceWrapper` which has a property
      // `listener` which contains the original listener bound above
      const listeners = emitter.rawListeners('log');
      const logFnWrapper = listeners[0];

      // Logs "log once" to the console and does not unbind the `once` event
      logFnWrapper.listener();

      // Logs "log once" to the console and removes the listener
      logFnWrapper();

      emitter.on('log', () => console.log('log persistently'));
      // Will return a new Array with a single function bound by `.on()` above
      const newListeners = emitter.rawListeners('log');

      // Logs "log persistently" twice
      newListeners[0]();
      emitter.emit('log'); +
      + +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns AbstractCursorEvents[EventKey][]

      v9.4.0

      +
    • Removes all listeners, or those of the specified eventName.

      +

      It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      • Optionalevent: string | symbol | EventKey

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v0.1.26

      +
    • 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

    • By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set to Infinity (or 0) to indicate an unlimited number of listeners.

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • n: number

      Returns this

      v0.3.5

      +
    • 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.

      +

      Returns Promise<any[]>

    • Experimental

      Listens once to the abort event on the provided signal.

      +

      Listening to the abort event on abort signals is unsafe and may +lead to resource leaks since another third party with the signal can +call e.stopImmediatePropagation(). Unfortunately Node.js cannot change +this since it would violate the web standard. Additionally, the original +API makes it easy to forget to remove listeners.

      +

      This API allows safely using AbortSignals in Node.js APIs by solving these +two issues by listening to the event such that stopImmediatePropagation does +not prevent the listener from running.

      +

      Returns a disposable so that it may be unsubscribed from more easily.

      +
      import { addAbortListener } from 'node:events';

      function example(signal) {
      let disposable;
      try {
      signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
      disposable = addAbortListener(signal, (e) => {
      // Do something when signal is aborted.
      });
      } finally {
      disposable?.[Symbol.dispose]();
      }
      } +
      + +

      Parameters

      • signal: AbortSignal
      • resource: ((event: Event) => void)
          • (event): void
          • Parameters

            • event: Event

            Returns void

      Returns Disposable

      Disposable that removes the abort listener.

      +

      v20.5.0

      +
    • Returns a copy of the array of listeners for the event named eventName.

      +

      For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

      +

      For EventTargets this is the only way to get the event listeners for the +event target. 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<DefaultEventMap> | EventTarget
      • name: string | symbol

      Returns Function[]

      v15.2.0, v14.17.0

      +
    • Returns the currently set max amount of listeners.

      +

      For EventEmitters this behaves exactly the same as calling .getMaxListeners on +the emitter.

      +

      For EventTargets this is the only way to get the max event listeners for the +event target. If the number of event handlers on a single EventTarget exceeds +the max set, the EventTarget will print a warning.

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

      {
      const ee = new EventEmitter();
      console.log(getMaxListeners(ee)); // 10
      setMaxListeners(11, ee);
      console.log(getMaxListeners(ee)); // 11
      }
      {
      const et = new EventTarget();
      console.log(getMaxListeners(et)); // 10
      setMaxListeners(11, et);
      console.log(getMaxListeners(et)); // 11
      } +
      + +

      Parameters

      • emitter: EventEmitter<DefaultEventMap> | EventTarget

      Returns number

      v19.9.0

      +
    • A class method that returns the number of listeners for the given eventName registered on the given emitter.

      +
      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<DefaultEventMap>

        The emitter to query

        +
      • eventName: string | symbol

        The event name

        +

      Returns number

      v0.9.12

      +

      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'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

      +

      An AbortSignal can be used to cancel waiting on events:

      +
      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()); +
      + +

      Use the close option to specify an array of event names that will end the iteration:

      +
      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);
      ee.emit('close');
      });

      for await (const event of on(ee, 'foo', { close: ['close'] })) {
      console.log(event); // prints ['bar'] [42]
      }
      // the loop will exit after 'close' is emitted
      console.log('done'); // prints 'done' +
      + +

      Parameters

      • emitter: EventEmitter<DefaultEventMap>
      • eventName: string | symbol
      • Optionaloptions: StaticEventEmitterIteratorOptions

      Returns AsyncIterator<any[], any, any>

      An AsyncIterator that iterates eventName events emitted by the emitter

      +

      v13.6.0, v12.16.0

      +
    • Parameters

      • emitter: EventTarget
      • eventName: string
      • Optionaloptions: StaticEventEmitterIteratorOptions

      Returns AsyncIterator<any[], any, any>

    • 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.

      +

      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.

      +
      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. 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:

      +
      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:

      +
      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: EventEmitter<DefaultEventMap>
      • eventName: string | symbol
      • Optionaloptions: StaticEventEmitterOptions

      Returns Promise<any[]>

      v11.13.0, v10.16.0

      +
    • Parameters

      • emitter: EventTarget
      • eventName: string
      • Optionaloptions: StaticEventEmitterOptions

      Returns Promise<any[]>

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

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

      setMaxListeners(5, target, emitter); +
      + +

      Parameters

      • Optionaln: number

        A non-negative number. The maximum number of listeners per EventTarget event.

        +
      • Rest...eventTargets: (EventEmitter<DefaultEventMap> | EventTarget)[]

        Zero or more {EventTarget} or {EventEmitter} instances. If none are specified, n is set as the default max for all newly created {EventTarget} and {EventEmitter} +objects.

        +

      Returns void

      v15.4.0

      +
    diff --git a/docs/6.16/classes/ListSearchIndexesCursor.html b/docs/6.16/classes/ListSearchIndexesCursor.html new file mode 100644 index 00000000000..9c3f4922b7d --- /dev/null +++ b/docs/6.16/classes/ListSearchIndexesCursor.html @@ -0,0 +1,556 @@ +ListSearchIndexesCursor | mongodb

    Class ListSearchIndexesCursor

    Hierarchy (view full)

    Properties

    [asyncDispose]: (() => Promise<void>)

    An alias for AbstractCursor.close|AbstractCursor.close().

    +
    pipeline: Document[]
    signal: undefined | AbortSignal
    captureRejections: boolean

    Value: boolean

    +

    Change the default captureRejections option on all new EventEmitter objects.

    +

    v13.4.0, v12.16.0

    +
    captureRejectionSymbol: typeof captureRejectionSymbol

    Value: Symbol.for('nodejs.rejection')

    +

    See how to write a custom rejection handler.

    +

    v13.4.0, v12.16.0

    +
    CLOSE: "close" = ...
    defaultMaxListeners: number

    By default, a maximum of 10 listeners can be registered for any single +event. This limit can be changed for individual EventEmitter instances +using the emitter.setMaxListeners(n) method. To change the default +for allEventEmitter instances, the events.defaultMaxListeners property +can be used. If this value is not a positive number, a RangeError is thrown.

    +

    Take caution when setting the events.defaultMaxListeners because the +change affects all EventEmitter instances, including those created before +the change is made. However, calling emitter.setMaxListeners(n) still has +precedence over events.defaultMaxListeners.

    +

    This is not a hard limit. The EventEmitter instance will allow +more listeners to be added but will output a trace warning to stderr indicating +that a "possible EventEmitter memory leak" has been detected. For any single +EventEmitter, the emitter.getMaxListeners() and emitter.setMaxListeners() methods can be used to +temporarily avoid this warning:

    +
    import { EventEmitter } from 'node:events';
    const emitter = new EventEmitter();
    emitter.setMaxListeners(emitter.getMaxListeners() + 1);
    emitter.once('event', () => {
    // do stuff
    emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
    }); +
    + +

    The --trace-warnings command-line flag can be used to display the +stack trace for such warnings.

    +

    The emitted warning can be inspected with process.on('warning') and will +have the additional emitter, type, and count properties, referring to +the event emitter instance, the event's name and the number of attached +listeners, respectively. +Its name property is set to 'MaxListenersExceededWarning'.

    +

    v0.11.2

    +
    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.

    +

    v13.6.0, v12.17.0

    +

    Accessors

    • get closed(): boolean
    • The cursor is closed and all remaining locally buffered documents have been iterated.

      +

      Returns boolean

    • get id(): undefined | Long
    • The cursor has no id until it receives a response from the initial cursor creating command.

      +

      It is non-zero for as long as the database has an open cursor.

      +

      The initiating command may receive a zero id if the entire result is in the firstBatch.

      +

      Returns undefined | Long

    • get killed(): boolean
    • A killCursors command was attempted on this cursor. +This is performed if the cursor id is non zero.

      +

      Returns boolean

    Methods

    • Type Parameters

      • K

      Parameters

      • error: Error
      • event: string | symbol
      • Rest...args: AnyRest

      Returns void

    • 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' -.

        +
      • value: boolean

        The flag boolean value.

        +

      Returns this

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +to each.

      +

      Returns true if the event had listeners, false otherwise.

      +
      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener +
      + +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns boolean

      v0.1.26

      +
    • Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

      +
      import { EventEmitter } from 'node:events';

      const myEE = new EventEmitter();
      myEE.on('foo', () => {});
      myEE.on('bar', () => {});

      const sym = Symbol('symbol');
      myEE.on(sym, () => {});

      console.log(myEE.eventNames());
      // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
      + +

      Returns string[]

      v6.0.0

      +
    • Iterates over all the documents for this cursor using the iterator, callback pattern.

      +

      If the iterator returns false, iteration will stop.

      +

      Parameters

      • iterator: ((doc: {
            name: string;
        }) => boolean | void)

        The iteration callback.

        +
          • (doc): boolean | void
          • Parameters

            • doc: {
                  name: string;
              }
              • name: string

            Returns boolean | void

      Returns Promise<void>

        +
      • Will be removed in a future release. Use for await...of instead.
      • +
      +
    • Returns the number of listeners listening for the event named eventName. +If listener is provided, it will return how many times the listener is found +in the list of the listeners of the event.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns number

      v3.2.0

      +
    • 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: {
            name: string;
        }) => T)

        The mapping transformation method.

        +
          • (doc): T
          • Parameters

            • doc: {
                  name: string;
              }
              • name: string

            Returns T

      Returns AggregationCursor<T>

      Note Cursors use null internally to indicate that there are no more documents in the cursor. Providing a mapping +function that maps values to null will result in the cursor closing itself before it has finished iterating +all documents. 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. +
      + +

      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. +Take note of the following 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 a maxTimeMS on the cursor query, allowing for hard timeout limits on queries (Only supported on MongoDB 2.6 or higher)

      +

      Parameters

      • value: number

        Number of milliseconds to wait before aborting the query.

        +

      Returns this

    • Get the next available document from the cursor, returns null if no more documents are available.

      +

      Returns Promise<null | {
          name: string;
      }>

    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      Returns this

      v0.1.101

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      Returns this

      v0.3.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v6.0.0

      +
    • Add a project stage to the aggregation pipeline

      +

      Type Parameters

      Parameters

      Returns AggregationCursor<T>

      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.

      +
      // Best way
      const docs: AggregationCursor<{ a: number }> = cursor.project<{ a: number }>({ _id: 0, a: true });
      // Flexible way
      const docs: AggregationCursor<Document> = cursor.project({ _id: 0, a: true }); +
      + +
      const cursor: AggregationCursor<{ a: number; b: string }> = coll.aggregate([]);
      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.aggregate().project<{ a: string }>({
      _id: 0,
      a: { $convert: { input: '$a', to: 'string' }
      }}); +
      + +
    • Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

      +
      import { EventEmitter } from 'node:events';
      const emitter = new EventEmitter();
      emitter.once('log', () => console.log('log once'));

      // Returns a new Array with a function `onceWrapper` which has a property
      // `listener` which contains the original listener bound above
      const listeners = emitter.rawListeners('log');
      const logFnWrapper = listeners[0];

      // Logs "log once" to the console and does not unbind the `once` event
      logFnWrapper.listener();

      // Logs "log once" to the console and removes the listener
      logFnWrapper();

      emitter.on('log', () => console.log('log persistently'));
      // Will return a new Array with a single function bound by `.on()` above
      const newListeners = emitter.rawListeners('log');

      // Logs "log persistently" twice
      newListeners[0]();
      emitter.emit('log'); +
      + +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns AbstractCursorEvents[EventKey][]

      v9.4.0

      +
    • Removes all listeners, or those of the specified eventName.

      +

      It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      • Optionalevent: string | symbol | EventKey

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v0.1.26

      +
    • 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

    • By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set to Infinity (or 0) to indicate an unlimited number of listeners.

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • n: number

      Returns this

      v0.3.5

      +
    • 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.

      +

      Returns Promise<{
          name: string;
      }[]>

    • Experimental

      Listens once to the abort event on the provided signal.

      +

      Listening to the abort event on abort signals is unsafe and may +lead to resource leaks since another third party with the signal can +call e.stopImmediatePropagation(). Unfortunately Node.js cannot change +this since it would violate the web standard. Additionally, the original +API makes it easy to forget to remove listeners.

      +

      This API allows safely using AbortSignals in Node.js APIs by solving these +two issues by listening to the event such that stopImmediatePropagation does +not prevent the listener from running.

      +

      Returns a disposable so that it may be unsubscribed from more easily.

      +
      import { addAbortListener } from 'node:events';

      function example(signal) {
      let disposable;
      try {
      signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
      disposable = addAbortListener(signal, (e) => {
      // Do something when signal is aborted.
      });
      } finally {
      disposable?.[Symbol.dispose]();
      }
      } +
      + +

      Parameters

      • signal: AbortSignal
      • resource: ((event: Event) => void)
          • (event): void
          • Parameters

            • event: Event

            Returns void

      Returns Disposable

      Disposable that removes the abort listener.

      +

      v20.5.0

      +
    • Returns a copy of the array of listeners for the event named eventName.

      +

      For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

      +

      For EventTargets this is the only way to get the event listeners for the +event target. 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<DefaultEventMap> | EventTarget
      • name: string | symbol

      Returns Function[]

      v15.2.0, v14.17.0

      +
    • Returns the currently set max amount of listeners.

      +

      For EventEmitters this behaves exactly the same as calling .getMaxListeners on +the emitter.

      +

      For EventTargets this is the only way to get the max event listeners for the +event target. If the number of event handlers on a single EventTarget exceeds +the max set, the EventTarget will print a warning.

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

      {
      const ee = new EventEmitter();
      console.log(getMaxListeners(ee)); // 10
      setMaxListeners(11, ee);
      console.log(getMaxListeners(ee)); // 11
      }
      {
      const et = new EventTarget();
      console.log(getMaxListeners(et)); // 10
      setMaxListeners(11, et);
      console.log(getMaxListeners(et)); // 11
      } +
      + +

      Parameters

      • emitter: EventEmitter<DefaultEventMap> | EventTarget

      Returns number

      v19.9.0

      +
    • A class method that returns the number of listeners for the given eventName registered on the given emitter.

      +
      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<DefaultEventMap>

        The emitter to query

        +
      • eventName: string | symbol

        The event name

        +

      Returns number

      v0.9.12

      +

      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'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

      +

      An AbortSignal can be used to cancel waiting on events:

      +
      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()); +
      + +

      Use the close option to specify an array of event names that will end the iteration:

      +
      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);
      ee.emit('close');
      });

      for await (const event of on(ee, 'foo', { close: ['close'] })) {
      console.log(event); // prints ['bar'] [42]
      }
      // the loop will exit after 'close' is emitted
      console.log('done'); // prints 'done' +
      + +

      Parameters

      • emitter: EventEmitter<DefaultEventMap>
      • eventName: string | symbol
      • Optionaloptions: StaticEventEmitterIteratorOptions

      Returns AsyncIterator<any[], any, any>

      An AsyncIterator that iterates eventName events emitted by the emitter

      +

      v13.6.0, v12.16.0

      +
    • Parameters

      • emitter: EventTarget
      • eventName: string
      • Optionaloptions: StaticEventEmitterIteratorOptions

      Returns AsyncIterator<any[], any, any>

    • 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.

      +

      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.

      +
      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. 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:

      +
      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:

      +
      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: EventEmitter<DefaultEventMap>
      • eventName: string | symbol
      • Optionaloptions: StaticEventEmitterOptions

      Returns Promise<any[]>

      v11.13.0, v10.16.0

      +
    • Parameters

      • emitter: EventTarget
      • eventName: string
      • Optionaloptions: StaticEventEmitterOptions

      Returns Promise<any[]>

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

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

      setMaxListeners(5, target, emitter); +
      + +

      Parameters

      • Optionaln: number

        A non-negative number. The maximum number of listeners per EventTarget event.

        +
      • Rest...eventTargets: (EventEmitter<DefaultEventMap> | EventTarget)[]

        Zero or more {EventTarget} or {EventEmitter} instances. If none are specified, n is set as the default max for all newly created {EventTarget} and {EventEmitter} +objects.

        +

      Returns void

      v15.4.0

      +
    diff --git a/docs/6.16/classes/MongoAPIError.html b/docs/6.16/classes/MongoAPIError.html new file mode 100644 index 00000000000..36ee2bf72f4 --- /dev/null +++ b/docs/6.16/classes/MongoAPIError.html @@ -0,0 +1,29 @@ +MongoAPIError | mongodb

    Class MongoAPIError

    An error generated when the driver API is used incorrectly

    +

    Hierarchy (view full)

    Constructors

    • Do not use this constructor!

      +

      Meant for internal use only.

      +

      Parameters

      • message: string
      • Optionaloptions: {
            cause?: Error;
        }
        • Optionalcause?: Error

      Returns MongoAPIError

      This class is only meant to be constructed within the driver. This constructor is +not subject to semantic versioning compatibility guarantees and may change at any time.

      +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoAWSError.html b/docs/6.16/classes/MongoAWSError.html new file mode 100644 index 00000000000..ee90f57b787 --- /dev/null +++ b/docs/6.16/classes/MongoAWSError.html @@ -0,0 +1,30 @@ +MongoAWSError | mongodb

    Class MongoAWSError

    A error generated when the user attempts to authenticate +via AWS, but fails

    +

    Hierarchy (view full)

    Constructors

    • Do not use this constructor!

      +

      Meant for internal use only.

      +

      Parameters

      • message: string
      • Optionaloptions: {
            cause?: Error;
        }
        • Optionalcause?: Error

      Returns MongoAWSError

      This class is only meant to be constructed within the driver. This constructor is +not subject to semantic versioning compatibility guarantees and may change at any time.

      +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoAzureError.html b/docs/6.16/classes/MongoAzureError.html new file mode 100644 index 00000000000..8a8e286eb47 --- /dev/null +++ b/docs/6.16/classes/MongoAzureError.html @@ -0,0 +1,30 @@ +MongoAzureError | mongodb

    Class MongoAzureError

    A error generated when the user attempts to authenticate +via Azure, but fails.

    +

    Hierarchy (view full)

    Constructors

    • Do not use this constructor!

      +

      Meant for internal use only.

      +

      Parameters

      • message: string

      Returns MongoAzureError

      This class is only meant to be constructed within the driver. This constructor is +not subject to semantic versioning compatibility guarantees and may change at any time.

      +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoBatchReExecutionError.html b/docs/6.16/classes/MongoBatchReExecutionError.html new file mode 100644 index 00000000000..a5d82576c07 --- /dev/null +++ b/docs/6.16/classes/MongoBatchReExecutionError.html @@ -0,0 +1,30 @@ +MongoBatchReExecutionError | mongodb

    Class MongoBatchReExecutionError

    An error generated when a batch command is re-executed after one of the commands in the batch +has failed

    +

    Hierarchy (view full)

    Constructors

    • Do not use this constructor!

      +

      Meant for internal use only.

      +

      Parameters

      • message: string = 'This batch has already been executed, create new batch to execute'

      Returns MongoBatchReExecutionError

      This class is only meant to be constructed within the driver. This constructor is +not subject to semantic versioning compatibility guarantees and may change at any time.

      +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoBulkWriteError.html b/docs/6.16/classes/MongoBulkWriteError.html new file mode 100644 index 00000000000..f8037646cc2 --- /dev/null +++ b/docs/6.16/classes/MongoBulkWriteError.html @@ -0,0 +1,52 @@ +MongoBulkWriteError | mongodb

    Class MongoBulkWriteError

    An error indicating an unsuccessful Bulk Write

    +

    Hierarchy (view full)

    Constructors

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    codeName?: string
    connectionGeneration?: number
    errInfo?: Document
    errorResponse: ErrorDescription

    Raw error result document returned by server.

    +
    message: string
    ok?: number
    stack?: string
    topologyVersion?: TopologyVersion
    writeConcernError?: Document
    writeErrors: OneOrMore<WriteError> = []
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get insertedIds(): {
          [key: number]: any;
      }
    • Inserted document generated Id's, hash key is the index of the originating operation

      +

      Returns {
          [key: number]: any;
      }

      • [key: number]: any
    • get matchedCount(): number
    • Number of documents matched for update.

      +

      Returns number

    • get upsertedIds(): {
          [key: number]: any;
      }
    • Upserted document generated Id's, hash key is the index of the originating operation

      +

      Returns {
          [key: number]: any;
      }

      • [key: number]: any

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoChangeStreamError.html b/docs/6.16/classes/MongoChangeStreamError.html new file mode 100644 index 00000000000..18cdfc622cb --- /dev/null +++ b/docs/6.16/classes/MongoChangeStreamError.html @@ -0,0 +1,29 @@ +MongoChangeStreamError | mongodb

    Class MongoChangeStreamError

    An error generated when a ChangeStream operation fails to execute.

    +

    Hierarchy (view full)

    Constructors

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoClient.html b/docs/6.16/classes/MongoClient.html new file mode 100644 index 00000000000..f85ce49f65c --- /dev/null +++ b/docs/6.16/classes/MongoClient.html @@ -0,0 +1,510 @@ +MongoClient | mongodb

    Class MongoClient

    The MongoClient class is a class that allows for making Connections to MongoDB.

    +

    The programmatically provided options take precedence over the URI options.

    +
    import { MongoClient } from 'mongodb';

    // Enable command monitoring for debugging
    const client = new MongoClient('mongodb://localhost:27017', { monitorCommands: true });

    client.on('commandStarted', started => console.log(started));
    client.db().collection('pets');
    await client.insertOne({ name: 'spot', kind: 'dog' }); +
    + +

    Hierarchy (view full)

    Implements

    Constructors

    Properties

    [asyncDispose]: (() => Promise<void>)

    An alias for MongoClient.close().

    +
    options: Readonly<Omit<MongoOptions,
        | "ca"
        | "cert"
        | "crl"
        | "key"
        | "monitorCommands">> & Pick<MongoOptions,
        | "ca"
        | "cert"
        | "crl"
        | "key"
        | "monitorCommands">

    The consolidate, parsed, transformed and merged options.

    +
    captureRejections: boolean

    Value: boolean

    +

    Change the default captureRejections option on all new EventEmitter objects.

    +

    v13.4.0, v12.16.0

    +
    captureRejectionSymbol: typeof captureRejectionSymbol

    Value: Symbol.for('nodejs.rejection')

    +

    See how to write a custom rejection handler.

    +

    v13.4.0, v12.16.0

    +
    defaultMaxListeners: number

    By default, a maximum of 10 listeners can be registered for any single +event. This limit can be changed for individual EventEmitter instances +using the emitter.setMaxListeners(n) method. To change the default +for allEventEmitter instances, the events.defaultMaxListeners property +can be used. If this value is not a positive number, a RangeError is thrown.

    +

    Take caution when setting the events.defaultMaxListeners because the +change affects all EventEmitter instances, including those created before +the change is made. However, calling emitter.setMaxListeners(n) still has +precedence over events.defaultMaxListeners.

    +

    This is not a hard limit. The EventEmitter instance will allow +more listeners to be added but will output a trace warning to stderr indicating +that a "possible EventEmitter memory leak" has been detected. For any single +EventEmitter, the emitter.getMaxListeners() and emitter.setMaxListeners() methods can be used to +temporarily avoid this warning:

    +
    import { EventEmitter } from 'node:events';
    const emitter = new EventEmitter();
    emitter.setMaxListeners(emitter.getMaxListeners() + 1);
    emitter.once('event', () => {
    // do stuff
    emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
    }); +
    + +

    The --trace-warnings command-line flag can be used to display the +stack trace for such warnings.

    +

    The emitted warning can be inspected with process.on('warning') and will +have the additional emitter, type, and count properties, referring to +the event emitter instance, the event's name and the number of attached +listeners, respectively. +Its name property is set to 'MaxListenersExceededWarning'.

    +

    v0.11.2

    +
    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.

    +

    v13.6.0, v12.17.0

    +

    Accessors

    Methods

    • Type Parameters

      • K

      Parameters

      • error: Error
      • event: string | symbol
      • Rest...args: AnyRest

      Returns void

    • Alias for emitter.on(eventName, listener).

      +

      Type Parameters

      • EventKey extends
            | "error"
            | "timeout"
            | "close"
            | "open"
            | "serverOpening"
            | "serverClosed"
            | "serverDescriptionChanged"
            | "topologyOpening"
            | "topologyClosed"
            | "topologyDescriptionChanged"
            | "connectionPoolCreated"
            | "connectionPoolClosed"
            | "connectionPoolCleared"
            | "connectionPoolReady"
            | "connectionCreated"
            | "connectionReady"
            | "connectionClosed"
            | "connectionCheckOutStarted"
            | "connectionCheckOutFailed"
            | "connectionCheckedOut"
            | "connectionCheckedIn"
            | "commandStarted"
            | "commandSucceeded"
            | "commandFailed"
            | "serverHeartbeatStarted"
            | "serverHeartbeatSucceeded"
            | "serverHeartbeatFailed"

      Parameters

      Returns this

      v0.1.26

      +
    • Alias for emitter.on(eventName, listener).

      +

      Parameters

      Returns this

      v0.1.26

      +
    • Alias for emitter.on(eventName, listener).

      +

      Parameters

      Returns this

      v0.1.26

      +
    • Cleans up client-side resources used by the MongoCLient and . This includes:

      +
        +
      • Closes all open, unused connections (see note).
      • +
      • Ends all in-use sessions with ClientSession.endSession().
      • +
      • Ends all unused sessions server-side.
      • +
      • Cleans up any resources being used for auto encryption if auto encryption is enabled.
      • +
      +

      Parameters

      • force: boolean = false

        Force close, emitting no events

        +

      Returns Promise<void>

      Any in-progress operations are not killed and any connections used by in progress operations +will be cleaned up lazily as operations finish.

      +
    • Connect to MongoDB using a url

      +

      Returns Promise<MongoClient>

      Calling connect is optional since the first operation you perform will call connect if it's needed. +timeoutMS will bound the time any operation can take before throwing a timeout error. +However, when the operation being run is automatically connecting your MongoClient the timeoutMS will not apply to the time taken to connect the MongoClient. +This means the time to setup the MongoClient does not count against timeoutMS. +If you are using timeoutMS we recommend connecting your client explicitly in advance of any operation to avoid this inconsistent execution time.

      +

      docs.mongodb.org/manual/reference/connection-string/

      +
    • Create a new Db instance sharing the current socket connections.

      +

      Parameters

      • OptionaldbName: string

        The name of the database we want to use. If not provided, use database name from connection string.

        +
      • Optionaloptions: DbOptions

        Optional settings for Db construction

        +

      Returns Db

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +to each.

      +

      Returns true if the event had listeners, false otherwise.

      +
      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener +
      + +

      Type Parameters

      • EventKey extends
            | "error"
            | "timeout"
            | "close"
            | "open"
            | "serverOpening"
            | "serverClosed"
            | "serverDescriptionChanged"
            | "topologyOpening"
            | "topologyClosed"
            | "topologyDescriptionChanged"
            | "connectionPoolCreated"
            | "connectionPoolClosed"
            | "connectionPoolCleared"
            | "connectionPoolReady"
            | "connectionCreated"
            | "connectionReady"
            | "connectionClosed"
            | "connectionCheckOutStarted"
            | "connectionCheckOutFailed"
            | "connectionCheckedOut"
            | "connectionCheckedIn"
            | "commandStarted"
            | "commandSucceeded"
            | "commandFailed"
            | "serverHeartbeatStarted"
            | "serverHeartbeatSucceeded"
            | "serverHeartbeatFailed"

      Parameters

      Returns boolean

      v0.1.26

      +
    • Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

      +
      import { EventEmitter } from 'node:events';

      const myEE = new EventEmitter();
      myEE.on('foo', () => {});
      myEE.on('bar', () => {});

      const sym = Symbol('symbol');
      myEE.on(sym, () => {});

      console.log(myEE.eventNames());
      // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
      + +

      Returns string[]

      v6.0.0

      +
    • Returns the number of listeners listening for the event named eventName. +If listener is provided, it will return how many times the listener is found +in the list of the listeners of the event.

      +

      Type Parameters

      • EventKey extends
            | "error"
            | "timeout"
            | "close"
            | "open"
            | "serverOpening"
            | "serverClosed"
            | "serverDescriptionChanged"
            | "topologyOpening"
            | "topologyClosed"
            | "topologyDescriptionChanged"
            | "connectionPoolCreated"
            | "connectionPoolClosed"
            | "connectionPoolCleared"
            | "connectionPoolReady"
            | "connectionCreated"
            | "connectionReady"
            | "connectionClosed"
            | "connectionCheckOutStarted"
            | "connectionCheckOutFailed"
            | "connectionCheckedOut"
            | "connectionCheckedIn"
            | "commandStarted"
            | "commandSucceeded"
            | "commandFailed"
            | "serverHeartbeatStarted"
            | "serverHeartbeatSucceeded"
            | "serverHeartbeatFailed"

      Parameters

      Returns number

      v3.2.0

      +
    • Returns a copy of the array of listeners for the event named eventName.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      });
      console.log(util.inspect(server.listeners('connection')));
      // Prints: [ [Function] ] +
      + +

      Type Parameters

      • EventKey extends
            | "error"
            | "timeout"
            | "close"
            | "open"
            | "serverOpening"
            | "serverClosed"
            | "serverDescriptionChanged"
            | "topologyOpening"
            | "topologyClosed"
            | "topologyDescriptionChanged"
            | "connectionPoolCreated"
            | "connectionPoolClosed"
            | "connectionPoolCleared"
            | "connectionPoolReady"
            | "connectionCreated"
            | "connectionReady"
            | "connectionClosed"
            | "connectionCheckOutStarted"
            | "connectionCheckOutFailed"
            | "connectionCheckedOut"
            | "connectionCheckedIn"
            | "commandStarted"
            | "commandSucceeded"
            | "commandFailed"
            | "serverHeartbeatStarted"
            | "serverHeartbeatSucceeded"
            | "serverHeartbeatFailed"

      Parameters

      Returns MongoClientEvents[EventKey][]

      v0.1.26

      +
    • Alias for emitter.removeListener().

      +

      Type Parameters

      • EventKey extends
            | "error"
            | "timeout"
            | "close"
            | "open"
            | "serverOpening"
            | "serverClosed"
            | "serverDescriptionChanged"
            | "topologyOpening"
            | "topologyClosed"
            | "topologyDescriptionChanged"
            | "connectionPoolCreated"
            | "connectionPoolClosed"
            | "connectionPoolCleared"
            | "connectionPoolReady"
            | "connectionCreated"
            | "connectionReady"
            | "connectionClosed"
            | "connectionCheckOutStarted"
            | "connectionCheckOutFailed"
            | "connectionCheckedOut"
            | "connectionCheckedIn"
            | "commandStarted"
            | "commandSucceeded"
            | "commandFailed"
            | "serverHeartbeatStarted"
            | "serverHeartbeatSucceeded"
            | "serverHeartbeatFailed"

      Parameters

      Returns this

      v10.0.0

      +
    • Alias for emitter.removeListener().

      +

      Parameters

      Returns this

      v10.0.0

      +
    • Alias for emitter.removeListener().

      +

      Parameters

      Returns this

      v10.0.0

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Type Parameters

      • EventKey extends
            | "error"
            | "timeout"
            | "close"
            | "open"
            | "serverOpening"
            | "serverClosed"
            | "serverDescriptionChanged"
            | "topologyOpening"
            | "topologyClosed"
            | "topologyDescriptionChanged"
            | "connectionPoolCreated"
            | "connectionPoolClosed"
            | "connectionPoolCleared"
            | "connectionPoolReady"
            | "connectionCreated"
            | "connectionReady"
            | "connectionClosed"
            | "connectionCheckOutStarted"
            | "connectionCheckOutFailed"
            | "connectionCheckedOut"
            | "connectionCheckedIn"
            | "commandStarted"
            | "commandSucceeded"
            | "commandFailed"
            | "serverHeartbeatStarted"
            | "serverHeartbeatSucceeded"
            | "serverHeartbeatFailed"

      Parameters

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      Returns this

      v0.1.101

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Type Parameters

      • EventKey extends
            | "error"
            | "timeout"
            | "close"
            | "open"
            | "serverOpening"
            | "serverClosed"
            | "serverDescriptionChanged"
            | "topologyOpening"
            | "topologyClosed"
            | "topologyDescriptionChanged"
            | "connectionPoolCreated"
            | "connectionPoolClosed"
            | "connectionPoolCleared"
            | "connectionPoolReady"
            | "connectionCreated"
            | "connectionReady"
            | "connectionClosed"
            | "connectionCheckOutStarted"
            | "connectionCheckOutFailed"
            | "connectionCheckedOut"
            | "connectionCheckedIn"
            | "commandStarted"
            | "commandSucceeded"
            | "commandFailed"
            | "serverHeartbeatStarted"
            | "serverHeartbeatSucceeded"
            | "serverHeartbeatFailed"

      Parameters

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      Returns this

      v0.3.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends
            | "error"
            | "timeout"
            | "close"
            | "open"
            | "serverOpening"
            | "serverClosed"
            | "serverDescriptionChanged"
            | "topologyOpening"
            | "topologyClosed"
            | "topologyDescriptionChanged"
            | "connectionPoolCreated"
            | "connectionPoolClosed"
            | "connectionPoolCleared"
            | "connectionPoolReady"
            | "connectionCreated"
            | "connectionReady"
            | "connectionClosed"
            | "connectionCheckOutStarted"
            | "connectionCheckOutFailed"
            | "connectionCheckedOut"
            | "connectionCheckedIn"
            | "commandStarted"
            | "commandSucceeded"
            | "commandFailed"
            | "serverHeartbeatStarted"
            | "serverHeartbeatSucceeded"
            | "serverHeartbeatFailed"

      Parameters

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends
            | "error"
            | "timeout"
            | "close"
            | "open"
            | "serverOpening"
            | "serverClosed"
            | "serverDescriptionChanged"
            | "topologyOpening"
            | "topologyClosed"
            | "topologyDescriptionChanged"
            | "connectionPoolCreated"
            | "connectionPoolClosed"
            | "connectionPoolCleared"
            | "connectionPoolReady"
            | "connectionCreated"
            | "connectionReady"
            | "connectionClosed"
            | "connectionCheckOutStarted"
            | "connectionCheckOutFailed"
            | "connectionCheckedOut"
            | "connectionCheckedIn"
            | "commandStarted"
            | "commandSucceeded"
            | "commandFailed"
            | "serverHeartbeatStarted"
            | "serverHeartbeatSucceeded"
            | "serverHeartbeatFailed"

      Parameters

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v6.0.0

      +
    • Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

      +
      import { EventEmitter } from 'node:events';
      const emitter = new EventEmitter();
      emitter.once('log', () => console.log('log once'));

      // Returns a new Array with a function `onceWrapper` which has a property
      // `listener` which contains the original listener bound above
      const listeners = emitter.rawListeners('log');
      const logFnWrapper = listeners[0];

      // Logs "log once" to the console and does not unbind the `once` event
      logFnWrapper.listener();

      // Logs "log once" to the console and removes the listener
      logFnWrapper();

      emitter.on('log', () => console.log('log persistently'));
      // Will return a new Array with a single function bound by `.on()` above
      const newListeners = emitter.rawListeners('log');

      // Logs "log persistently" twice
      newListeners[0]();
      emitter.emit('log'); +
      + +

      Type Parameters

      • EventKey extends
            | "error"
            | "timeout"
            | "close"
            | "open"
            | "serverOpening"
            | "serverClosed"
            | "serverDescriptionChanged"
            | "topologyOpening"
            | "topologyClosed"
            | "topologyDescriptionChanged"
            | "connectionPoolCreated"
            | "connectionPoolClosed"
            | "connectionPoolCleared"
            | "connectionPoolReady"
            | "connectionCreated"
            | "connectionReady"
            | "connectionClosed"
            | "connectionCheckOutStarted"
            | "connectionCheckOutFailed"
            | "connectionCheckedOut"
            | "connectionCheckedIn"
            | "commandStarted"
            | "commandSucceeded"
            | "commandFailed"
            | "serverHeartbeatStarted"
            | "serverHeartbeatSucceeded"
            | "serverHeartbeatFailed"

      Parameters

      Returns MongoClientEvents[EventKey][]

      v9.4.0

      +
    • Removes all listeners, or those of the specified eventName.

      +

      It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends
            | "error"
            | "timeout"
            | "close"
            | "open"
            | "serverOpening"
            | "serverClosed"
            | "serverDescriptionChanged"
            | "topologyOpening"
            | "topologyClosed"
            | "topologyDescriptionChanged"
            | "connectionPoolCreated"
            | "connectionPoolClosed"
            | "connectionPoolCleared"
            | "connectionPoolReady"
            | "connectionCreated"
            | "connectionReady"
            | "connectionClosed"
            | "connectionCheckOutStarted"
            | "connectionCheckOutFailed"
            | "connectionCheckedOut"
            | "connectionCheckedIn"
            | "commandStarted"
            | "commandSucceeded"
            | "commandFailed"
            | "serverHeartbeatStarted"
            | "serverHeartbeatSucceeded"
            | "serverHeartbeatFailed"

      Parameters

      • Optionalevent: string | symbol | EventKey

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends
            | "error"
            | "timeout"
            | "close"
            | "open"
            | "serverOpening"
            | "serverClosed"
            | "serverDescriptionChanged"
            | "topologyOpening"
            | "topologyClosed"
            | "topologyDescriptionChanged"
            | "connectionPoolCreated"
            | "connectionPoolClosed"
            | "connectionPoolCleared"
            | "connectionPoolReady"
            | "connectionCreated"
            | "connectionReady"
            | "connectionClosed"
            | "connectionCheckOutStarted"
            | "connectionCheckOutFailed"
            | "connectionCheckedOut"
            | "connectionCheckedIn"
            | "commandStarted"
            | "commandSucceeded"
            | "commandFailed"
            | "serverHeartbeatStarted"
            | "serverHeartbeatSucceeded"
            | "serverHeartbeatFailed"

      Parameters

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v0.1.26

      +
    • By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set to Infinity (or 0) to indicate an unlimited number of listeners.

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • n: number

      Returns this

      v0.3.5

      +
    • Creates a new ClientSession. When using the returned session in an operation +a corresponding ServerSession will be created.

      +

      Parameters

      Returns ClientSession

      A ClientSession instance may only be passed to operations being performed on the same +MongoClient it was started from.

      +
    • Create a new Change Stream, watching for new changes (insertions, updates, +replacements, deletions, and invalidations) in this cluster. Will ignore all +changes to system collections, as well as the local, admin, and config databases.

      +

      Type Parameters

      Parameters

      • pipeline: Document[] = []

        An array of pipeline stages through which to pass change stream documents. This allows for filtering (using $match) and manipulating the change stream documents.

        +
      • options: ChangeStreamOptions = {}

        Optional settings for the command

        +

      Returns ChangeStream<TSchema, TChange>

      watch() accepts two generic arguments for distinct use cases:

      +
        +
      • The first is to provide the schema that may be defined for all the data within the current cluster
      • +
      • The second is to override the shape of the change stream document entirely, if it is not provided the type will default to ChangeStreamDocument of the first argument
      • +
      +

      In iterator mode, if a next() call throws a timeout error, it will attempt to resume the change stream. +The next call can just be retried after this succeeds.

      +
      const changeStream = collection.watch([], { timeoutMS: 100 });
      try {
      await changeStream.next();
      } catch (e) {
      if (e instanceof MongoOperationTimeoutError && !changeStream.closed) {
      await changeStream.next();
      }
      throw e;
      } +
      + +

      In emitter mode, if the change stream goes timeoutMS without emitting a change event, it will +emit an error event that returns a MongoOperationTimeoutError, but will not close the change +stream unless the resume attempt fails. There is no need to re-establish change listeners as +this will automatically continue emitting change events once the resume attempt completes.

      +
      const changeStream = collection.watch([], { timeoutMS: 100 });
      changeStream.on('change', console.log);
      changeStream.on('error', e => {
      if (e instanceof MongoOperationTimeoutError && !changeStream.closed) {
      // do nothing
      } else {
      changeStream.close();
      }
      }); +
      + +
    • A convenience method for creating and handling the clean up of a ClientSession. +The session will always be ended when the executor finishes.

      +

      Type Parameters

      • T = any

      Parameters

      • executor: WithSessionCallback<T>

        An executor function that all operations using the provided session must be invoked in

        +

      Returns Promise<T>

    • Type Parameters

      • T = any

      Parameters

      Returns Promise<T>

    • Experimental

      Listens once to the abort event on the provided signal.

      +

      Listening to the abort event on abort signals is unsafe and may +lead to resource leaks since another third party with the signal can +call e.stopImmediatePropagation(). Unfortunately Node.js cannot change +this since it would violate the web standard. Additionally, the original +API makes it easy to forget to remove listeners.

      +

      This API allows safely using AbortSignals in Node.js APIs by solving these +two issues by listening to the event such that stopImmediatePropagation does +not prevent the listener from running.

      +

      Returns a disposable so that it may be unsubscribed from more easily.

      +
      import { addAbortListener } from 'node:events';

      function example(signal) {
      let disposable;
      try {
      signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
      disposable = addAbortListener(signal, (e) => {
      // Do something when signal is aborted.
      });
      } finally {
      disposable?.[Symbol.dispose]();
      }
      } +
      + +

      Parameters

      • signal: AbortSignal
      • resource: ((event: Event) => void)
          • (event): void
          • Parameters

            • event: Event

            Returns void

      Returns Disposable

      Disposable that removes the abort listener.

      +

      v20.5.0

      +
    • Connect to MongoDB using a url

      +

      Parameters

      Returns Promise<MongoClient>

      Calling connect is optional since the first operation you perform will call connect if it's needed. +timeoutMS will bound the time any operation can take before throwing a timeout error. +However, when the operation being run is automatically connecting your MongoClient the timeoutMS will not apply to the time taken to connect the MongoClient. +This means the time to setup the MongoClient does not count against timeoutMS. +If you are using timeoutMS we recommend connecting your client explicitly in advance of any operation to avoid this inconsistent execution time.

      +

      https://www.mongodb.com/docs/manual/reference/connection-string/

      +
    • Returns a copy of the array of listeners for the event named eventName.

      +

      For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

      +

      For EventTargets this is the only way to get the event listeners for the +event target. 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<DefaultEventMap> | EventTarget
      • name: string | symbol

      Returns Function[]

      v15.2.0, v14.17.0

      +
    • Returns the currently set max amount of listeners.

      +

      For EventEmitters this behaves exactly the same as calling .getMaxListeners on +the emitter.

      +

      For EventTargets this is the only way to get the max event listeners for the +event target. If the number of event handlers on a single EventTarget exceeds +the max set, the EventTarget will print a warning.

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

      {
      const ee = new EventEmitter();
      console.log(getMaxListeners(ee)); // 10
      setMaxListeners(11, ee);
      console.log(getMaxListeners(ee)); // 11
      }
      {
      const et = new EventTarget();
      console.log(getMaxListeners(et)); // 10
      setMaxListeners(11, et);
      console.log(getMaxListeners(et)); // 11
      } +
      + +

      Parameters

      • emitter: EventEmitter<DefaultEventMap> | EventTarget

      Returns number

      v19.9.0

      +
    • A class method that returns the number of listeners for the given eventName registered on the given emitter.

      +
      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<DefaultEventMap>

        The emitter to query

        +
      • eventName: string | symbol

        The event name

        +

      Returns number

      v0.9.12

      +

      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'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

      +

      An AbortSignal can be used to cancel waiting on events:

      +
      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()); +
      + +

      Use the close option to specify an array of event names that will end the iteration:

      +
      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);
      ee.emit('close');
      });

      for await (const event of on(ee, 'foo', { close: ['close'] })) {
      console.log(event); // prints ['bar'] [42]
      }
      // the loop will exit after 'close' is emitted
      console.log('done'); // prints 'done' +
      + +

      Parameters

      • emitter: EventEmitter<DefaultEventMap>
      • eventName: string | symbol
      • Optionaloptions: StaticEventEmitterIteratorOptions

      Returns AsyncIterator<any[], any, any>

      An AsyncIterator that iterates eventName events emitted by the emitter

      +

      v13.6.0, v12.16.0

      +
    • Parameters

      • emitter: EventTarget
      • eventName: string
      • Optionaloptions: StaticEventEmitterIteratorOptions

      Returns AsyncIterator<any[], any, any>

    • 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.

      +

      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.

      +
      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. 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:

      +
      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:

      +
      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: EventEmitter<DefaultEventMap>
      • eventName: string | symbol
      • Optionaloptions: StaticEventEmitterOptions

      Returns Promise<any[]>

      v11.13.0, v10.16.0

      +
    • Parameters

      • emitter: EventTarget
      • eventName: string
      • Optionaloptions: StaticEventEmitterOptions

      Returns Promise<any[]>

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

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

      setMaxListeners(5, target, emitter); +
      + +

      Parameters

      • Optionaln: number

        A non-negative number. The maximum number of listeners per EventTarget event.

        +
      • Rest...eventTargets: (EventEmitter<DefaultEventMap> | EventTarget)[]

        Zero or more {EventTarget} or {EventEmitter} instances. If none are specified, n is set as the default max for all newly created {EventTarget} and {EventEmitter} +objects.

        +

      Returns void

      v15.4.0

      +
    diff --git a/docs/6.16/classes/MongoClientBulkWriteCursorError.html b/docs/6.16/classes/MongoClientBulkWriteCursorError.html new file mode 100644 index 00000000000..98730efb6b8 --- /dev/null +++ b/docs/6.16/classes/MongoClientBulkWriteCursorError.html @@ -0,0 +1,29 @@ +MongoClientBulkWriteCursorError | mongodb

    Class MongoClientBulkWriteCursorError

    An error indicating that an error occurred when processing bulk write results.

    +

    Hierarchy (view full)

    Constructors

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoClientBulkWriteError.html b/docs/6.16/classes/MongoClientBulkWriteError.html new file mode 100644 index 00000000000..89773d92cca --- /dev/null +++ b/docs/6.16/classes/MongoClientBulkWriteError.html @@ -0,0 +1,42 @@ +MongoClientBulkWriteError | mongodb

    Class MongoClientBulkWriteError

    An error indicating that an error occurred when executing the bulk write.

    +

    Hierarchy (view full)

    Constructors

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    codeName?: string
    connectionGeneration?: number
    errInfo?: Document
    errorResponse: ErrorDescription

    Raw error result document returned by server.

    +
    message: string
    ok?: number
    partialResult?: ClientBulkWriteResult

    The results of any successful operations that were performed before the error was +encountered.

    +
    stack?: string
    topologyVersion?: TopologyVersion
    writeConcernError?: Document
    writeConcernErrors: Document[]

    Write concern errors that occurred while executing the bulk write. This list may have +multiple items if more than one server command was required to execute the bulk write.

    +
    writeErrors: Map<number, ClientBulkWriteError>

    Errors that occurred during the execution of individual write operations. This map will +contain at most one entry if the bulk write was ordered.

    +
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoClientBulkWriteExecutionError.html b/docs/6.16/classes/MongoClientBulkWriteExecutionError.html new file mode 100644 index 00000000000..867bd848cf6 --- /dev/null +++ b/docs/6.16/classes/MongoClientBulkWriteExecutionError.html @@ -0,0 +1,29 @@ +MongoClientBulkWriteExecutionError | mongodb

    Class MongoClientBulkWriteExecutionError

    An error indicating that an error occurred on the client when executing a client bulk write.

    +

    Hierarchy (view full)

    Constructors

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoCompatibilityError.html b/docs/6.16/classes/MongoCompatibilityError.html new file mode 100644 index 00000000000..672e449b00d --- /dev/null +++ b/docs/6.16/classes/MongoCompatibilityError.html @@ -0,0 +1,30 @@ +MongoCompatibilityError | mongodb

    Class MongoCompatibilityError

    An error generated when a feature that is not enabled or allowed for the current server +configuration is used

    +

    Hierarchy (view full)

    Constructors

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoCredentials.html b/docs/6.16/classes/MongoCredentials.html new file mode 100644 index 00000000000..3da8b7539d1 --- /dev/null +++ b/docs/6.16/classes/MongoCredentials.html @@ -0,0 +1,21 @@ +MongoCredentials | mongodb

    Class MongoCredentials

    A representation of the credentials used by MongoDB

    +

    Constructors

    Properties

    mechanism: AuthMechanism

    The method used to authenticate

    +
    mechanismProperties: AuthMechanismProperties

    Special properties used by some types of auth mechanisms

    +
    password: string

    The password used for authentication

    +
    source: string

    The database that the user should authenticate against

    +
    username: string

    The username used for authentication

    +

    Methods

    diff --git a/docs/6.16/classes/MongoCryptAzureKMSRequestError.html b/docs/6.16/classes/MongoCryptAzureKMSRequestError.html new file mode 100644 index 00000000000..2e9fc3f7bb8 --- /dev/null +++ b/docs/6.16/classes/MongoCryptAzureKMSRequestError.html @@ -0,0 +1,31 @@ +MongoCryptAzureKMSRequestError | mongodb

    Class MongoCryptAzureKMSRequestError

    An error indicating that mongodb-client-encryption failed to auto-refresh Azure KMS credentials.

    +

    Hierarchy (view full)

    Constructors

    Properties

    body?: Document

    The body of the http response that failed, if present.

    +
    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoCryptCreateDataKeyError.html b/docs/6.16/classes/MongoCryptCreateDataKeyError.html new file mode 100644 index 00000000000..2183b846dd2 --- /dev/null +++ b/docs/6.16/classes/MongoCryptCreateDataKeyError.html @@ -0,0 +1,30 @@ +MongoCryptCreateDataKeyError | mongodb

    Class MongoCryptCreateDataKeyError

    An error indicating that ClientEncryption.createEncryptedCollection() failed to create data keys

    +

    Hierarchy (view full)

    Constructors

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    encryptedFields: Document
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoCryptCreateEncryptedCollectionError.html b/docs/6.16/classes/MongoCryptCreateEncryptedCollectionError.html new file mode 100644 index 00000000000..9e66af98989 --- /dev/null +++ b/docs/6.16/classes/MongoCryptCreateEncryptedCollectionError.html @@ -0,0 +1,30 @@ +MongoCryptCreateEncryptedCollectionError | mongodb

    Class MongoCryptCreateEncryptedCollectionError

    An error indicating that ClientEncryption.createEncryptedCollection() failed to create a collection

    +

    Hierarchy (view full)

    Constructors

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    encryptedFields: Document
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoCryptError.html b/docs/6.16/classes/MongoCryptError.html new file mode 100644 index 00000000000..3c8b611d52b --- /dev/null +++ b/docs/6.16/classes/MongoCryptError.html @@ -0,0 +1,29 @@ +MongoCryptError | mongodb

    Class MongoCryptError

    An error indicating that something went wrong specifically with MongoDB Client Encryption

    +

    Hierarchy (view full)

    Constructors

    • Do not use this constructor!

      +

      Meant for internal use only.

      +

      Parameters

      • message: string
      • options: {
            cause?: Error;
        } = {}
        • Optionalcause?: Error

      Returns MongoCryptError

      This class is only meant to be constructed within the driver. This constructor is +not subject to semantic versioning compatibility guarantees and may change at any time.

      +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoCryptInvalidArgumentError.html b/docs/6.16/classes/MongoCryptInvalidArgumentError.html new file mode 100644 index 00000000000..12fee3b57e7 --- /dev/null +++ b/docs/6.16/classes/MongoCryptInvalidArgumentError.html @@ -0,0 +1,29 @@ +MongoCryptInvalidArgumentError | mongodb

    Class MongoCryptInvalidArgumentError

    An error indicating an invalid argument was provided to an encryption API.

    +

    Hierarchy (view full)

    Constructors

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoCryptKMSRequestNetworkTimeoutError.html b/docs/6.16/classes/MongoCryptKMSRequestNetworkTimeoutError.html new file mode 100644 index 00000000000..a91a61f82f8 --- /dev/null +++ b/docs/6.16/classes/MongoCryptKMSRequestNetworkTimeoutError.html @@ -0,0 +1,28 @@ +MongoCryptKMSRequestNetworkTimeoutError | mongodb

    Class MongoCryptKMSRequestNetworkTimeoutError

    Hierarchy (view full)

    Constructors

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoCursorExhaustedError.html b/docs/6.16/classes/MongoCursorExhaustedError.html new file mode 100644 index 00000000000..c1a240afa7e --- /dev/null +++ b/docs/6.16/classes/MongoCursorExhaustedError.html @@ -0,0 +1,29 @@ +MongoCursorExhaustedError | mongodb

    Class MongoCursorExhaustedError

    An error thrown when an attempt is made to read from a cursor that has been exhausted

    +

    Hierarchy (view full)

    Constructors

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoCursorInUseError.html b/docs/6.16/classes/MongoCursorInUseError.html new file mode 100644 index 00000000000..0aee4c6bff8 --- /dev/null +++ b/docs/6.16/classes/MongoCursorInUseError.html @@ -0,0 +1,30 @@ +MongoCursorInUseError | mongodb

    Class MongoCursorInUseError

    An error thrown when the user attempts to add options to a cursor that has already been +initialized

    +

    Hierarchy (view full)

    Constructors

    • Do not use this constructor!

      +

      Meant for internal use only.

      +

      Parameters

      • message: string = 'Cursor is already initialized'

      Returns MongoCursorInUseError

      This class is only meant to be constructed within the driver. This constructor is +not subject to semantic versioning compatibility guarantees and may change at any time.

      +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoDBCollectionNamespace.html b/docs/6.16/classes/MongoDBCollectionNamespace.html new file mode 100644 index 00000000000..46432427e9a --- /dev/null +++ b/docs/6.16/classes/MongoDBCollectionNamespace.html @@ -0,0 +1,12 @@ +MongoDBCollectionNamespace | mongodb

    Class MongoDBCollectionNamespace

    A class representing a collection's namespace. This class enforces (through Typescript) that +the collection portion of the namespace is defined and should only be +used in scenarios where this can be guaranteed.

    +

    Hierarchy (view full)

    Constructors

    Properties

    Methods

    Constructors

    Properties

    collection: string

    collection name

    +
    db: string

    database name

    +

    Methods

    diff --git a/docs/6.16/classes/MongoDBNamespace.html b/docs/6.16/classes/MongoDBNamespace.html new file mode 100644 index 00000000000..702aa1eec08 --- /dev/null +++ b/docs/6.16/classes/MongoDBNamespace.html @@ -0,0 +1,12 @@ +MongoDBNamespace | mongodb

    Class MongoDBNamespace

    Hierarchy (view full)

    Constructors

    Properties

    Methods

    Constructors

    Properties

    collection?: string

    collection name

    +
    db: string

    database name

    +

    Methods

    diff --git a/docs/6.16/classes/MongoDecompressionError.html b/docs/6.16/classes/MongoDecompressionError.html new file mode 100644 index 00000000000..180cb47e975 --- /dev/null +++ b/docs/6.16/classes/MongoDecompressionError.html @@ -0,0 +1,30 @@ +MongoDecompressionError | mongodb

    Class MongoDecompressionError

    An error generated when the driver fails to decompress +data received from the server.

    +

    Hierarchy (view full)

    Constructors

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoDriverError.html b/docs/6.16/classes/MongoDriverError.html new file mode 100644 index 00000000000..171cedc5375 --- /dev/null +++ b/docs/6.16/classes/MongoDriverError.html @@ -0,0 +1,29 @@ +MongoDriverError | mongodb

    Class MongoDriverError

    An error generated by the driver

    +

    Hierarchy (view full)

    Constructors

    • Do not use this constructor!

      +

      Meant for internal use only.

      +

      Parameters

      • message: string
      • Optionaloptions: {
            cause?: Error;
        }
        • Optionalcause?: Error

      Returns MongoDriverError

      This class is only meant to be constructed within the driver. This constructor is +not subject to semantic versioning compatibility guarantees and may change at any time.

      +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoError.html b/docs/6.16/classes/MongoError.html new file mode 100644 index 00000000000..3ddc48cda83 --- /dev/null +++ b/docs/6.16/classes/MongoError.html @@ -0,0 +1,28 @@ +MongoError | mongodb

    Class MongoError

    Hierarchy (view full)

    Constructors

    • Do not use this constructor!

      +

      Meant for internal use only.

      +

      Parameters

      • message: string
      • Optionaloptions: {
            cause?: Error;
        }
        • Optionalcause?: Error

      Returns MongoError

      This class is only meant to be constructed within the driver. This constructor is +not subject to semantic versioning compatibility guarantees and may change at any time.

      +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    Methods

    • Parameters

      • label: string

      Returns void

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoExpiredSessionError.html b/docs/6.16/classes/MongoExpiredSessionError.html new file mode 100644 index 00000000000..7a0864a44a2 --- /dev/null +++ b/docs/6.16/classes/MongoExpiredSessionError.html @@ -0,0 +1,30 @@ +MongoExpiredSessionError | mongodb

    Class MongoExpiredSessionError

    An error generated when the user attempts to operate +on a session that has expired or has been closed.

    +

    Hierarchy (view full)

    Constructors

    • Do not use this constructor!

      +

      Meant for internal use only.

      +

      Parameters

      • message: string = 'Cannot use a session that has ended'

      Returns MongoExpiredSessionError

      This class is only meant to be constructed within the driver. This constructor is +not subject to semantic versioning compatibility guarantees and may change at any time.

      +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoGCPError.html b/docs/6.16/classes/MongoGCPError.html new file mode 100644 index 00000000000..ed170a83f3a --- /dev/null +++ b/docs/6.16/classes/MongoGCPError.html @@ -0,0 +1,30 @@ +MongoGCPError | mongodb

    Class MongoGCPError

    A error generated when the user attempts to authenticate +via GCP, but fails.

    +

    Hierarchy (view full)

    Constructors

    • Do not use this constructor!

      +

      Meant for internal use only.

      +

      Parameters

      • message: string

      Returns MongoGCPError

      This class is only meant to be constructed within the driver. This constructor is +not subject to semantic versioning compatibility guarantees and may change at any time.

      +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoGridFSChunkError.html b/docs/6.16/classes/MongoGridFSChunkError.html new file mode 100644 index 00000000000..cca518e909b --- /dev/null +++ b/docs/6.16/classes/MongoGridFSChunkError.html @@ -0,0 +1,30 @@ +MongoGridFSChunkError | mongodb

    Class MongoGridFSChunkError

    An error generated when a malformed or invalid chunk is +encountered when reading from a GridFSStream.

    +

    Hierarchy (view full)

    Constructors

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoGridFSStreamError.html b/docs/6.16/classes/MongoGridFSStreamError.html new file mode 100644 index 00000000000..df573b8764c --- /dev/null +++ b/docs/6.16/classes/MongoGridFSStreamError.html @@ -0,0 +1,29 @@ +MongoGridFSStreamError | mongodb

    Class MongoGridFSStreamError

    An error generated when a GridFSStream operation fails to execute.

    +

    Hierarchy (view full)

    Constructors

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoInvalidArgumentError.html b/docs/6.16/classes/MongoInvalidArgumentError.html new file mode 100644 index 00000000000..988941ec709 --- /dev/null +++ b/docs/6.16/classes/MongoInvalidArgumentError.html @@ -0,0 +1,30 @@ +MongoInvalidArgumentError | mongodb

    Class MongoInvalidArgumentError

    An error generated when the user supplies malformed or unexpected arguments +or when a required argument or field is not provided.

    +

    Hierarchy (view full)

    Constructors

    • Do not use this constructor!

      +

      Meant for internal use only.

      +

      Parameters

      • message: string
      • Optionaloptions: {
            cause?: Error;
        }
        • Optionalcause?: Error

      Returns MongoInvalidArgumentError

      This class is only meant to be constructed within the driver. This constructor is +not subject to semantic versioning compatibility guarantees and may change at any time.

      +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoKerberosError.html b/docs/6.16/classes/MongoKerberosError.html new file mode 100644 index 00000000000..1958650649c --- /dev/null +++ b/docs/6.16/classes/MongoKerberosError.html @@ -0,0 +1,30 @@ +MongoKerberosError | mongodb

    Class MongoKerberosError

    A error generated when the user attempts to authenticate +via Kerberos, but fails to connect to the Kerberos client.

    +

    Hierarchy (view full)

    Constructors

    • Do not use this constructor!

      +

      Meant for internal use only.

      +

      Parameters

      • message: string

      Returns MongoKerberosError

      This class is only meant to be constructed within the driver. This constructor is +not subject to semantic versioning compatibility guarantees and may change at any time.

      +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoMissingCredentialsError.html b/docs/6.16/classes/MongoMissingCredentialsError.html new file mode 100644 index 00000000000..48a4c0d15e9 --- /dev/null +++ b/docs/6.16/classes/MongoMissingCredentialsError.html @@ -0,0 +1,30 @@ +MongoMissingCredentialsError | mongodb

    Class MongoMissingCredentialsError

    An error generated when the user fails to provide authentication credentials before attempting +to connect to a mongo server instance.

    +

    Hierarchy (view full)

    Constructors

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoMissingDependencyError.html b/docs/6.16/classes/MongoMissingDependencyError.html new file mode 100644 index 00000000000..33f3bb46884 --- /dev/null +++ b/docs/6.16/classes/MongoMissingDependencyError.html @@ -0,0 +1,31 @@ +MongoMissingDependencyError | mongodb

    Class MongoMissingDependencyError

    An error generated when a required module or dependency is not present in the local environment

    +

    Hierarchy (view full)

    Constructors

    • Do not use this constructor!

      +

      Meant for internal use only.

      +

      Parameters

      • message: string
      • options: {
            cause: Error;
            dependencyName: string;
        }
        • cause: Error
        • dependencyName: string

      Returns MongoMissingDependencyError

      This class is only meant to be constructed within the driver. This constructor is +not subject to semantic versioning compatibility guarantees and may change at any time.

      +

    Properties

    cause: Error

    This property is assigned in the Error constructor.

    +
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    dependencyName: string
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoNetworkError.html b/docs/6.16/classes/MongoNetworkError.html new file mode 100644 index 00000000000..d9a2f51cbac --- /dev/null +++ b/docs/6.16/classes/MongoNetworkError.html @@ -0,0 +1,29 @@ +MongoNetworkError | mongodb

    Class MongoNetworkError

    An error indicating an issue with the network, including TCP errors and timeouts.

    +

    Hierarchy (view full)

    Constructors

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoNetworkTimeoutError.html b/docs/6.16/classes/MongoNetworkTimeoutError.html new file mode 100644 index 00000000000..8ec9bdab6b8 --- /dev/null +++ b/docs/6.16/classes/MongoNetworkTimeoutError.html @@ -0,0 +1,29 @@ +MongoNetworkTimeoutError | mongodb

    Class MongoNetworkTimeoutError

    An error indicating a network timeout occurred

    +

    Hierarchy (view full)

    Constructors

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoNotConnectedError.html b/docs/6.16/classes/MongoNotConnectedError.html new file mode 100644 index 00000000000..0fcebc90e12 --- /dev/null +++ b/docs/6.16/classes/MongoNotConnectedError.html @@ -0,0 +1,30 @@ +MongoNotConnectedError | mongodb

    Class MongoNotConnectedError

    An error thrown when the user attempts to operate on a database or collection through a MongoClient +that has not yet successfully called the "connect" method

    +

    Hierarchy (view full)

    Constructors

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoOIDCError.html b/docs/6.16/classes/MongoOIDCError.html new file mode 100644 index 00000000000..6246c973b0b --- /dev/null +++ b/docs/6.16/classes/MongoOIDCError.html @@ -0,0 +1,30 @@ +MongoOIDCError | mongodb

    Class MongoOIDCError

    A error generated when the user attempts to authenticate +via OIDC callbacks, but fails.

    +

    Hierarchy (view full)

    Constructors

    • Do not use this constructor!

      +

      Meant for internal use only.

      +

      Parameters

      • message: string

      Returns MongoOIDCError

      This class is only meant to be constructed within the driver. This constructor is +not subject to semantic versioning compatibility guarantees and may change at any time.

      +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoOperationTimeoutError.html b/docs/6.16/classes/MongoOperationTimeoutError.html new file mode 100644 index 00000000000..016516df5b8 --- /dev/null +++ b/docs/6.16/classes/MongoOperationTimeoutError.html @@ -0,0 +1,31 @@ +MongoOperationTimeoutError | mongodb

    Class MongoOperationTimeoutError

    try {
    await blogs.insertOne(blogPost, { timeoutMS: 60_000 })
    } catch (error) {
    if (error instanceof MongoOperationTimeoutError) {
    console.log(`Oh no! writer's block!`, error);
    }
    } +
    + +

    Hierarchy (view full)

    Constructors

    • Do not use this constructor!

      +

      Meant for internal use only.

      +

      Parameters

      • message: string
      • Optionaloptions: {
            cause?: Error;
        }
        • Optionalcause?: Error

      Returns MongoOperationTimeoutError

      This class is only meant to be constructed within the driver. This constructor is +not subject to semantic versioning compatibility guarantees and may change at any time.

      +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoParseError.html b/docs/6.16/classes/MongoParseError.html new file mode 100644 index 00000000000..7f30e09cf4e --- /dev/null +++ b/docs/6.16/classes/MongoParseError.html @@ -0,0 +1,29 @@ +MongoParseError | mongodb

    Class MongoParseError

    An error used when attempting to parse a value (like a connection string)

    +

    Hierarchy (view full)

    Constructors

    • Do not use this constructor!

      +

      Meant for internal use only.

      +

      Parameters

      • message: string

      Returns MongoParseError

      This class is only meant to be constructed within the driver. This constructor is +not subject to semantic versioning compatibility guarantees and may change at any time.

      +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoRuntimeError.html b/docs/6.16/classes/MongoRuntimeError.html new file mode 100644 index 00000000000..dc264fa8996 --- /dev/null +++ b/docs/6.16/classes/MongoRuntimeError.html @@ -0,0 +1,30 @@ +MongoRuntimeError | mongodb

    Class MongoRuntimeError

    An error generated when the driver encounters unexpected input +or reaches an unexpected/invalid internal state.

    +

    Hierarchy (view full)

    Constructors

    • Do not use this constructor!

      +

      Meant for internal use only.

      +

      Parameters

      • message: string
      • Optionaloptions: {
            cause?: Error;
        }
        • Optionalcause?: Error

      Returns MongoRuntimeError

      This class is only meant to be constructed within the driver. This constructor is +not subject to semantic versioning compatibility guarantees and may change at any time.

      +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoServerClosedError.html b/docs/6.16/classes/MongoServerClosedError.html new file mode 100644 index 00000000000..c1c1a71c680 --- /dev/null +++ b/docs/6.16/classes/MongoServerClosedError.html @@ -0,0 +1,30 @@ +MongoServerClosedError | mongodb

    Class MongoServerClosedError

    An error generated when an attempt is made to operate +on a closed/closing server.

    +

    Hierarchy (view full)

    Constructors

    • Do not use this constructor!

      +

      Meant for internal use only.

      +

      Parameters

      • message: string = 'Server is closed'

      Returns MongoServerClosedError

      This class is only meant to be constructed within the driver. This constructor is +not subject to semantic versioning compatibility guarantees and may change at any time.

      +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoServerError.html b/docs/6.16/classes/MongoServerError.html new file mode 100644 index 00000000000..6c1b6dff4a7 --- /dev/null +++ b/docs/6.16/classes/MongoServerError.html @@ -0,0 +1,35 @@ +MongoServerError | mongodb

    Class MongoServerError

    An error coming from the mongo server

    +

    Hierarchy (view full)

    Indexable

    • [key: string]: any

    Constructors

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    codeName?: string
    connectionGeneration?: number
    errInfo?: Document
    errorResponse: ErrorDescription

    Raw error result document returned by server.

    +
    message: string
    ok?: number
    stack?: string
    topologyVersion?: TopologyVersion
    writeConcernError?: Document
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoServerSelectionError.html b/docs/6.16/classes/MongoServerSelectionError.html new file mode 100644 index 00000000000..3b3ab2c31a0 --- /dev/null +++ b/docs/6.16/classes/MongoServerSelectionError.html @@ -0,0 +1,31 @@ +MongoServerSelectionError | mongodb

    Class MongoServerSelectionError

    An error signifying a client-side server selection error

    +

    Hierarchy (view full)

    Constructors

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string

    An optional reason context, such as an error saved during flow of monitoring and selecting servers

    +
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoStalePrimaryError.html b/docs/6.16/classes/MongoStalePrimaryError.html new file mode 100644 index 00000000000..78e71e641b0 --- /dev/null +++ b/docs/6.16/classes/MongoStalePrimaryError.html @@ -0,0 +1,29 @@ +MongoStalePrimaryError | mongodb

    Class MongoStalePrimaryError

    An error generated when a primary server is marked stale, never directly thrown

    +

    Hierarchy (view full)

    Constructors

    • Do not use this constructor!

      +

      Meant for internal use only.

      +

      Parameters

      • message: string
      • Optionaloptions: {
            cause?: Error;
        }
        • Optionalcause?: Error

      Returns MongoStalePrimaryError

      This class is only meant to be constructed within the driver. This constructor is +not subject to semantic versioning compatibility guarantees and may change at any time.

      +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoSystemError.html b/docs/6.16/classes/MongoSystemError.html new file mode 100644 index 00000000000..4f6b66d89e6 --- /dev/null +++ b/docs/6.16/classes/MongoSystemError.html @@ -0,0 +1,31 @@ +MongoSystemError | mongodb

    Class MongoSystemError

    An error signifying a general system issue

    +

    Hierarchy (view full)

    Constructors

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string

    An optional reason context, such as an error saved during flow of monitoring and selecting servers

    +
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoTailableCursorError.html b/docs/6.16/classes/MongoTailableCursorError.html new file mode 100644 index 00000000000..c8b7acab7b6 --- /dev/null +++ b/docs/6.16/classes/MongoTailableCursorError.html @@ -0,0 +1,29 @@ +MongoTailableCursorError | mongodb

    Class MongoTailableCursorError

    An error thrown when the user calls a function or method not supported on a tailable cursor

    +

    Hierarchy (view full)

    Constructors

    • Do not use this constructor!

      +

      Meant for internal use only.

      +

      Parameters

      • message: string = 'Tailable cursor does not support this operation'

      Returns MongoTailableCursorError

      This class is only meant to be constructed within the driver. This constructor is +not subject to semantic versioning compatibility guarantees and may change at any time.

      +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoTopologyClosedError.html b/docs/6.16/classes/MongoTopologyClosedError.html new file mode 100644 index 00000000000..0f46add92e0 --- /dev/null +++ b/docs/6.16/classes/MongoTopologyClosedError.html @@ -0,0 +1,30 @@ +MongoTopologyClosedError | mongodb

    Class MongoTopologyClosedError

    An error generated when an attempt is made to operate on a +dropped, or otherwise unavailable, database.

    +

    Hierarchy (view full)

    Constructors

    • Do not use this constructor!

      +

      Meant for internal use only.

      +

      Parameters

      • message: string = 'Topology is closed'

      Returns MongoTopologyClosedError

      This class is only meant to be constructed within the driver. This constructor is +not subject to semantic versioning compatibility guarantees and may change at any time.

      +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoTransactionError.html b/docs/6.16/classes/MongoTransactionError.html new file mode 100644 index 00000000000..64c8e4c5c0d --- /dev/null +++ b/docs/6.16/classes/MongoTransactionError.html @@ -0,0 +1,30 @@ +MongoTransactionError | mongodb

    Class MongoTransactionError

    An error generated when the user makes a mistake in the usage of transactions. +(e.g. attempting to commit a transaction with a readPreference other than primary)

    +

    Hierarchy (view full)

    Constructors

    • Do not use this constructor!

      +

      Meant for internal use only.

      +

      Parameters

      • message: string

      Returns MongoTransactionError

      This class is only meant to be constructed within the driver. This constructor is +not subject to semantic versioning compatibility guarantees and may change at any time.

      +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoUnexpectedServerResponseError.html b/docs/6.16/classes/MongoUnexpectedServerResponseError.html new file mode 100644 index 00000000000..0764bddf47b --- /dev/null +++ b/docs/6.16/classes/MongoUnexpectedServerResponseError.html @@ -0,0 +1,37 @@ +MongoUnexpectedServerResponseError | mongodb

    Class MongoUnexpectedServerResponseError

    An error generated when a parsable unexpected response comes from the server. +This is generally an error where the driver in a state expecting a certain behavior to occur in +the next message from MongoDB but it receives something else. +This error does not represent an issue with wire message formatting.

    +

    When an operation fails, it is the driver's job to retry it. It must perform serverSelection +again to make sure that it attempts the operation against a server in a good state. If server +selection returns a server that does not support retryable operations, this error is used. +This scenario is unlikely as retryable support would also have been determined on the first attempt +but it is possible the state change could report a selectable server that does not support retries.

    +

    Hierarchy (view full)

    Constructors

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/MongoWriteConcernError.html b/docs/6.16/classes/MongoWriteConcernError.html new file mode 100644 index 00000000000..bb7c100a610 --- /dev/null +++ b/docs/6.16/classes/MongoWriteConcernError.html @@ -0,0 +1,37 @@ +MongoWriteConcernError | mongodb

    Class MongoWriteConcernError

    An error thrown when the server reports a writeConcernError

    +

    Hierarchy (view full)

    Constructors

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    codeName?: string
    connectionGeneration?: number
    errInfo?: Document
    errorResponse: ErrorDescription

    Raw error result document returned by server.

    +
    message: string
    ok?: number
    result: Document

    The result document

    +
    stack?: string
    topologyVersion?: TopologyVersion
    writeConcernError?: Document
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Parameters

      • label: string

        The error label to check for

        +

      Returns boolean

      returns true if the error has the provided error label

      +
    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • OptionalconstructorOpt: Function

      Returns void

    diff --git a/docs/6.16/classes/OrderedBulkOperation.html b/docs/6.16/classes/OrderedBulkOperation.html new file mode 100644 index 00000000000..068e1581a98 --- /dev/null +++ b/docs/6.16/classes/OrderedBulkOperation.html @@ -0,0 +1,22 @@ +OrderedBulkOperation | mongodb

    Class OrderedBulkOperation

    Hierarchy (view full)

    Properties

    isOrdered: boolean
    operationId?: number

    Accessors

    Methods

    • Builds a find operation for an update/updateOne/delete/deleteOne/replaceOne. +Returns a builder object used to complete the definition of the operation.

      +

      Parameters

      Returns FindOperators

      const bulkOp = collection.initializeOrderedBulkOp();

      // Add an updateOne to the bulkOp
      bulkOp.find({ a: 1 }).updateOne({ $set: { b: 2 } });

      // Add an updateMany to the bulkOp
      bulkOp.find({ c: 3 }).update({ $set: { d: 4 } });

      // Add an upsert
      bulkOp.find({ e: 5 }).upsert().updateOne({ $set: { f: 6 } });

      // Add a deletion
      bulkOp.find({ g: 7 }).deleteOne();

      // Add a multi deletion
      bulkOp.find({ h: 8 }).delete();

      // Add a replaceOne
      bulkOp.find({ i: 9 }).replaceOne({writeConcern: { j: 10 }});

      // Update using a pipeline (requires Mongodb 4.2 or higher)
      bulk.find({ k: 11, y: { $exists: true }, z: { $exists: true } }).updateOne([
      { $set: { total: { $sum: [ '$y', '$z' ] } } }
      ]);

      // All of the ops will now be executed
      await bulkOp.execute(); +
      + +
    diff --git a/docs/6.16/classes/ReadConcern.html b/docs/6.16/classes/ReadConcern.html new file mode 100644 index 00000000000..ea54bc5265d --- /dev/null +++ b/docs/6.16/classes/ReadConcern.html @@ -0,0 +1,15 @@ +ReadConcern | mongodb

    Class ReadConcern

    The MongoDB ReadConcern, which allows for control of the consistency and isolation properties +of the data read from replica sets and replica set shards.

    +

    Constructors

    Properties

    Accessors

    Methods

    Constructors

    Properties

    level: string

    Accessors

    Methods

    diff --git a/docs/6.16/classes/ReadPreference.html b/docs/6.16/classes/ReadPreference.html new file mode 100644 index 00000000000..f82c61f1a58 --- /dev/null +++ b/docs/6.16/classes/ReadPreference.html @@ -0,0 +1,44 @@ +ReadPreference | mongodb

    Class ReadPreference

    The ReadPreference class is a class that represents a MongoDB ReadPreference and is +used to construct connections.

    +

    Constructors

    Properties

    hedge?: HedgeOptions
    maxStalenessSeconds?: number
    minWireVersion?: number
    tags?: TagSet[]
    nearest: ReadPreference = ...
    NEAREST: "nearest" = ReadPreferenceMode.nearest
    primary: ReadPreference = ...
    PRIMARY: "primary" = ReadPreferenceMode.primary
    PRIMARY_PREFERRED: "primaryPreferred" = ReadPreferenceMode.primaryPreferred
    primaryPreferred: ReadPreference = ...
    secondary: ReadPreference = ...
    SECONDARY: "secondary" = ReadPreferenceMode.secondary
    SECONDARY_PREFERRED: "secondaryPreferred" = ReadPreferenceMode.secondaryPreferred
    secondaryPreferred: ReadPreference = ...

    Accessors

    Methods

    • Check if the two ReadPreferences are equivalent

      +

      Parameters

      • readPreference: ReadPreference

        The read preference with which to check equality

        +

      Returns boolean

    • Validate if a mode is legal

      +

      Parameters

      • Optionalmode: string

        The string representing the read preference mode.

        +

      Returns boolean

    • Validate if a mode is legal

      +

      Parameters

      • mode: string

        The string representing the read preference mode.

        +

      Returns boolean

    diff --git a/docs/6.16/classes/RunCommandCursor.html b/docs/6.16/classes/RunCommandCursor.html new file mode 100644 index 00000000000..cf30036dc06 --- /dev/null +++ b/docs/6.16/classes/RunCommandCursor.html @@ -0,0 +1,516 @@ +RunCommandCursor | mongodb

    Class RunCommandCursor

    Hierarchy (view full)

    Properties

    [asyncDispose]: (() => Promise<void>)

    An alias for AbstractCursor.close|AbstractCursor.close().

    +
    command: Readonly<Record<string, any>>
    getMoreOptions: {
        batchSize?: number;
        comment?: any;
        maxAwaitTimeMS?: number;
    } = {}
    signal: undefined | AbortSignal
    captureRejections: boolean

    Value: boolean

    +

    Change the default captureRejections option on all new EventEmitter objects.

    +

    v13.4.0, v12.16.0

    +
    captureRejectionSymbol: typeof captureRejectionSymbol

    Value: Symbol.for('nodejs.rejection')

    +

    See how to write a custom rejection handler.

    +

    v13.4.0, v12.16.0

    +
    CLOSE: "close" = ...
    defaultMaxListeners: number

    By default, a maximum of 10 listeners can be registered for any single +event. This limit can be changed for individual EventEmitter instances +using the emitter.setMaxListeners(n) method. To change the default +for allEventEmitter instances, the events.defaultMaxListeners property +can be used. If this value is not a positive number, a RangeError is thrown.

    +

    Take caution when setting the events.defaultMaxListeners because the +change affects all EventEmitter instances, including those created before +the change is made. However, calling emitter.setMaxListeners(n) still has +precedence over events.defaultMaxListeners.

    +

    This is not a hard limit. The EventEmitter instance will allow +more listeners to be added but will output a trace warning to stderr indicating +that a "possible EventEmitter memory leak" has been detected. For any single +EventEmitter, the emitter.getMaxListeners() and emitter.setMaxListeners() methods can be used to +temporarily avoid this warning:

    +
    import { EventEmitter } from 'node:events';
    const emitter = new EventEmitter();
    emitter.setMaxListeners(emitter.getMaxListeners() + 1);
    emitter.once('event', () => {
    // do stuff
    emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
    }); +
    + +

    The --trace-warnings command-line flag can be used to display the +stack trace for such warnings.

    +

    The emitted warning can be inspected with process.on('warning') and will +have the additional emitter, type, and count properties, referring to +the event emitter instance, the event's name and the number of attached +listeners, respectively. +Its name property is set to 'MaxListenersExceededWarning'.

    +

    v0.11.2

    +
    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.

    +

    v13.6.0, v12.17.0

    +

    Accessors

    • get closed(): boolean
    • The cursor is closed and all remaining locally buffered documents have been iterated.

      +

      Returns boolean

    • get id(): undefined | Long
    • The cursor has no id until it receives a response from the initial cursor creating command.

      +

      It is non-zero for as long as the database has an open cursor.

      +

      The initiating command may receive a zero id if the entire result is in the firstBatch.

      +

      Returns undefined | Long

    • get killed(): boolean
    • A killCursors command was attempted on this cursor. +This is performed if the cursor id is non zero.

      +

      Returns boolean

    Methods

    • Type Parameters

      • K

      Parameters

      • error: Error
      • event: string | symbol
      • Rest...args: AnyRest

      Returns void

    • Frees any client-side resources used by the cursor.

      +

      Parameters

      • Optionaloptions: {
            timeoutMS?: number;
        }
        • OptionaltimeoutMS?: number

      Returns Promise<void>

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +to each.

      +

      Returns true if the event had listeners, false otherwise.

      +
      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener +
      + +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns boolean

      v0.1.26

      +
    • Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

      +
      import { EventEmitter } from 'node:events';

      const myEE = new EventEmitter();
      myEE.on('foo', () => {});
      myEE.on('bar', () => {});

      const sym = Symbol('symbol');
      myEE.on(sym, () => {});

      console.log(myEE.eventNames());
      // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
      + +

      Returns string[]

      v6.0.0

      +
    • Iterates over all the documents for this cursor using the iterator, callback pattern.

      +

      If the iterator returns false, iteration will stop.

      +

      Parameters

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

        The iteration callback.

        +
          • (doc): boolean | void
          • Parameters

            • doc: any

            Returns boolean | void

      Returns Promise<void>

        +
      • Will be removed in a future release. Use for await...of instead.
      • +
      +
    • Returns the number of listeners listening for the event named eventName. +If listener is provided, it will return how many times the listener is found +in the list of the listeners of the event.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns number

      v3.2.0

      +
    • 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 = any

      Parameters

      • transform: ((doc: any) => T)

        The mapping transformation method.

        +
          • (doc): T
          • Parameters

            • doc: any

            Returns T

      Returns AbstractCursor<T, AbstractCursorEvents>

      Note Cursors use null internally to indicate that there are no more documents in the cursor. Providing a mapping +function that maps values to null will result in the cursor closing itself before it has finished iterating +all documents. 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. +
      + +

      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. +Take note of the following 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[] +
      + +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      Returns this

      v0.1.101

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      Returns this

      v0.3.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v6.0.0

      +
    • Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

      +
      import { EventEmitter } from 'node:events';
      const emitter = new EventEmitter();
      emitter.once('log', () => console.log('log once'));

      // Returns a new Array with a function `onceWrapper` which has a property
      // `listener` which contains the original listener bound above
      const listeners = emitter.rawListeners('log');
      const logFnWrapper = listeners[0];

      // Logs "log once" to the console and does not unbind the `once` event
      logFnWrapper.listener();

      // Logs "log once" to the console and removes the listener
      logFnWrapper();

      emitter.on('log', () => console.log('log persistently'));
      // Will return a new Array with a single function bound by `.on()` above
      const newListeners = emitter.rawListeners('log');

      // Logs "log persistently" twice
      newListeners[0]();
      emitter.emit('log'); +
      + +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns AbstractCursorEvents[EventKey][]

      v9.4.0

      +
    • Removes all listeners, or those of the specified eventName.

      +

      It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      • Optionalevent: string | symbol | EventKey

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends "close"

      Parameters

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v0.1.26

      +
    • 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

    • Controls the getMore.batchSize field

      +

      Parameters

      • batchSize: number

        the number documents to return in the nextBatch

        +

      Returns this

    • By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set to Infinity (or 0) to indicate an unlimited number of listeners.

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • n: number

      Returns this

      v0.3.5

      +
    • Controls the getMore.maxTimeMS field. Only valid when cursor is tailable await

      +

      Parameters

      • maxTimeMS: number

        the number of milliseconds to wait for new data

        +

      Returns this

    • 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.

      +

      Returns Promise<any[]>

    • Experimental

      Listens once to the abort event on the provided signal.

      +

      Listening to the abort event on abort signals is unsafe and may +lead to resource leaks since another third party with the signal can +call e.stopImmediatePropagation(). Unfortunately Node.js cannot change +this since it would violate the web standard. Additionally, the original +API makes it easy to forget to remove listeners.

      +

      This API allows safely using AbortSignals in Node.js APIs by solving these +two issues by listening to the event such that stopImmediatePropagation does +not prevent the listener from running.

      +

      Returns a disposable so that it may be unsubscribed from more easily.

      +
      import { addAbortListener } from 'node:events';

      function example(signal) {
      let disposable;
      try {
      signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
      disposable = addAbortListener(signal, (e) => {
      // Do something when signal is aborted.
      });
      } finally {
      disposable?.[Symbol.dispose]();
      }
      } +
      + +

      Parameters

      • signal: AbortSignal
      • resource: ((event: Event) => void)
          • (event): void
          • Parameters

            • event: Event

            Returns void

      Returns Disposable

      Disposable that removes the abort listener.

      +

      v20.5.0

      +
    • Returns a copy of the array of listeners for the event named eventName.

      +

      For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

      +

      For EventTargets this is the only way to get the event listeners for the +event target. 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<DefaultEventMap> | EventTarget
      • name: string | symbol

      Returns Function[]

      v15.2.0, v14.17.0

      +
    • Returns the currently set max amount of listeners.

      +

      For EventEmitters this behaves exactly the same as calling .getMaxListeners on +the emitter.

      +

      For EventTargets this is the only way to get the max event listeners for the +event target. If the number of event handlers on a single EventTarget exceeds +the max set, the EventTarget will print a warning.

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

      {
      const ee = new EventEmitter();
      console.log(getMaxListeners(ee)); // 10
      setMaxListeners(11, ee);
      console.log(getMaxListeners(ee)); // 11
      }
      {
      const et = new EventTarget();
      console.log(getMaxListeners(et)); // 10
      setMaxListeners(11, et);
      console.log(getMaxListeners(et)); // 11
      } +
      + +

      Parameters

      • emitter: EventEmitter<DefaultEventMap> | EventTarget

      Returns number

      v19.9.0

      +
    • A class method that returns the number of listeners for the given eventName registered on the given emitter.

      +
      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<DefaultEventMap>

        The emitter to query

        +
      • eventName: string | symbol

        The event name

        +

      Returns number

      v0.9.12

      +

      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'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

      +

      An AbortSignal can be used to cancel waiting on events:

      +
      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()); +
      + +

      Use the close option to specify an array of event names that will end the iteration:

      +
      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);
      ee.emit('close');
      });

      for await (const event of on(ee, 'foo', { close: ['close'] })) {
      console.log(event); // prints ['bar'] [42]
      }
      // the loop will exit after 'close' is emitted
      console.log('done'); // prints 'done' +
      + +

      Parameters

      • emitter: EventEmitter<DefaultEventMap>
      • eventName: string | symbol
      • Optionaloptions: StaticEventEmitterIteratorOptions

      Returns AsyncIterator<any[], any, any>

      An AsyncIterator that iterates eventName events emitted by the emitter

      +

      v13.6.0, v12.16.0

      +
    • Parameters

      • emitter: EventTarget
      • eventName: string
      • Optionaloptions: StaticEventEmitterIteratorOptions

      Returns AsyncIterator<any[], any, any>

    • 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.

      +

      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.

      +
      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. 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:

      +
      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:

      +
      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: EventEmitter<DefaultEventMap>
      • eventName: string | symbol
      • Optionaloptions: StaticEventEmitterOptions

      Returns Promise<any[]>

      v11.13.0, v10.16.0

      +
    • Parameters

      • emitter: EventTarget
      • eventName: string
      • Optionaloptions: StaticEventEmitterOptions

      Returns Promise<any[]>

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

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

      setMaxListeners(5, target, emitter); +
      + +

      Parameters

      • Optionaln: number

        A non-negative number. The maximum number of listeners per EventTarget event.

        +
      • Rest...eventTargets: (EventEmitter<DefaultEventMap> | EventTarget)[]

        Zero or more {EventTarget} or {EventEmitter} instances. If none are specified, n is set as the default max for all newly created {EventTarget} and {EventEmitter} +objects.

        +

      Returns void

      v15.4.0

      +
    diff --git a/docs/6.16/classes/ServerCapabilities.html b/docs/6.16/classes/ServerCapabilities.html new file mode 100644 index 00000000000..e504ccd04ff --- /dev/null +++ b/docs/6.16/classes/ServerCapabilities.html @@ -0,0 +1,13 @@ +ServerCapabilities | mongodb

    Class ServerCapabilities

    Constructors

    Properties

    maxWireVersion: number
    minWireVersion: number

    Accessors

    diff --git a/docs/6.16/classes/ServerClosedEvent.html b/docs/6.16/classes/ServerClosedEvent.html new file mode 100644 index 00000000000..9e3d8308165 --- /dev/null +++ b/docs/6.16/classes/ServerClosedEvent.html @@ -0,0 +1,6 @@ +ServerClosedEvent | mongodb

    Class ServerClosedEvent

    Emitted when server is closed.

    +

    Properties

    Properties

    address: string

    The address (host/port pair) of the server

    +
    topologyId: number

    A unique identifier for the topology

    +
    diff --git a/docs/6.16/classes/ServerDescription.html b/docs/6.16/classes/ServerDescription.html new file mode 100644 index 00000000000..4c088f642f7 --- /dev/null +++ b/docs/6.16/classes/ServerDescription.html @@ -0,0 +1,46 @@ +ServerDescription | mongodb

    Class ServerDescription

    The client's view of a single server, based on the most recent hello outcome.

    +

    Internal type, not meant to be directly instantiated

    +

    Properties

    $clusterTime?: ClusterTime
    address: string
    arbiters: string[]
    electionId: null | ObjectId
    error: null | MongoError
    hosts: string[]
    iscryptd: boolean

    Indicates server is a mongocryptd instance.

    +
    lastUpdateTime: number
    lastWriteDate: number
    logicalSessionTimeoutMinutes: null | number
    maxBsonObjectSize: null | number

    The max bson object size.

    +
    maxMessageSizeBytes: null | number

    The max message size in bytes for the server.

    +
    maxWireVersion: number
    maxWriteBatchSize: null | number

    The max number of writes in a bulk write command.

    +
    me: null | string
    minRoundTripTime: number

    The minimum measurement of the last 10 measurements of roundTripTime that have been collected

    +
    minWireVersion: number
    passives: string[]
    primary: null | string
    roundTripTime: number
    setName: null | string
    setVersion: null | number
    tags: TagSet
    topologyVersion: null | TopologyVersion

    Accessors

    Methods

    diff --git a/docs/6.16/classes/ServerDescriptionChangedEvent.html b/docs/6.16/classes/ServerDescriptionChangedEvent.html new file mode 100644 index 00000000000..a49c9ad0672 --- /dev/null +++ b/docs/6.16/classes/ServerDescriptionChangedEvent.html @@ -0,0 +1,11 @@ +ServerDescriptionChangedEvent | mongodb

    Class ServerDescriptionChangedEvent

    Emitted when server description changes, but does NOT include changes to the RTT.

    +

    Properties

    address: string

    The address (host/port pair) of the server

    +
    name: "serverDescriptionChanged" = SERVER_DESCRIPTION_CHANGED
    newDescription: ServerDescription

    The new server description

    +
    previousDescription: ServerDescription

    The previous server description

    +
    topologyId: number

    A unique identifier for the topology

    +
    diff --git a/docs/6.16/classes/ServerHeartbeatFailedEvent.html b/docs/6.16/classes/ServerHeartbeatFailedEvent.html new file mode 100644 index 00000000000..8eee8c06652 --- /dev/null +++ b/docs/6.16/classes/ServerHeartbeatFailedEvent.html @@ -0,0 +1,10 @@ +ServerHeartbeatFailedEvent | mongodb

    Class ServerHeartbeatFailedEvent

    Emitted when the server monitor’s hello fails, either with an “ok: 0” or a socket exception.

    +

    Properties

    awaited: boolean

    Is true when using the streaming protocol

    +
    connectionId: string

    The connection id for the command

    +
    duration: number

    The execution time of the event in ms

    +
    failure: Error

    The command failure

    +
    diff --git a/docs/6.16/classes/ServerHeartbeatStartedEvent.html b/docs/6.16/classes/ServerHeartbeatStartedEvent.html new file mode 100644 index 00000000000..2dd36a14c21 --- /dev/null +++ b/docs/6.16/classes/ServerHeartbeatStartedEvent.html @@ -0,0 +1,7 @@ +ServerHeartbeatStartedEvent | mongodb

    Class ServerHeartbeatStartedEvent

    Emitted when the server monitor’s hello command is started - immediately before +the hello command is serialized into raw BSON and written to the socket.

    +

    Properties

    Properties

    awaited: boolean

    Is true when using the streaming protocol

    +
    connectionId: string

    The connection id for the command

    +
    diff --git a/docs/6.16/classes/ServerHeartbeatSucceededEvent.html b/docs/6.16/classes/ServerHeartbeatSucceededEvent.html new file mode 100644 index 00000000000..393caaa1637 --- /dev/null +++ b/docs/6.16/classes/ServerHeartbeatSucceededEvent.html @@ -0,0 +1,10 @@ +ServerHeartbeatSucceededEvent | mongodb

    Class ServerHeartbeatSucceededEvent

    Emitted when the server monitor’s hello succeeds.

    +

    Properties

    awaited: boolean

    Is true when using the streaming protocol

    +
    connectionId: string

    The connection id for the command

    +
    duration: number

    The execution time of the event in ms

    +
    reply: Document

    The command reply

    +
    diff --git a/docs/6.16/classes/ServerOpeningEvent.html b/docs/6.16/classes/ServerOpeningEvent.html new file mode 100644 index 00000000000..df88bb72989 --- /dev/null +++ b/docs/6.16/classes/ServerOpeningEvent.html @@ -0,0 +1,6 @@ +ServerOpeningEvent | mongodb

    Class ServerOpeningEvent

    Emitted when server is initialized.

    +

    Properties

    Properties

    address: string

    The address (host/port pair) of the server

    +
    topologyId: number

    A unique identifier for the topology

    +
    diff --git a/docs/6.16/classes/ServerSession.html b/docs/6.16/classes/ServerSession.html new file mode 100644 index 00000000000..532b268ae7a --- /dev/null +++ b/docs/6.16/classes/ServerSession.html @@ -0,0 +1,10 @@ +ServerSession | mongodb

    Class ServerSession

    Reflects the existence of a session on the server. Can be reused by the session pool. +WARNING: not meant to be instantiated directly. For internal use only.

    +

    Properties

    Methods

    Properties

    isDirty: boolean
    lastUse: number
    txnNumber: number

    Methods

    • Determines if the server session has timed out.

      +

      Parameters

      • sessionTimeoutMinutes: number

        The server's "logicalSessionTimeoutMinutes"

        +

      Returns boolean

    diff --git a/docs/6.16/classes/StreamDescription.html b/docs/6.16/classes/StreamDescription.html new file mode 100644 index 00000000000..bb55ff1c3f5 --- /dev/null +++ b/docs/6.16/classes/StreamDescription.html @@ -0,0 +1,19 @@ +StreamDescription | mongodb

    Class StreamDescription

    Constructors

    Properties

    __nodejs_mock_server__?: boolean
    address: string
    compressor?:
        | "none"
        | "snappy"
        | "zlib"
        | "zstd"
    compressors: (
        | "none"
        | "snappy"
        | "zlib"
        | "zstd")[]
    hello: null | Document = null
    loadBalanced: boolean
    logicalSessionTimeoutMinutes?: number
    maxBsonObjectSize: number
    maxMessageSizeBytes: number
    maxWireVersion?: number
    maxWriteBatchSize: number
    minWireVersion?: number
    serverConnectionId: null | bigint
    zlibCompressionLevel?: number

    Methods

    diff --git a/docs/6.16/classes/TopologyClosedEvent.html b/docs/6.16/classes/TopologyClosedEvent.html new file mode 100644 index 00000000000..9c1ca470de1 --- /dev/null +++ b/docs/6.16/classes/TopologyClosedEvent.html @@ -0,0 +1,4 @@ +TopologyClosedEvent | mongodb

    Class TopologyClosedEvent

    Emitted when topology is closed.

    +

    Properties

    Properties

    topologyId: number

    A unique identifier for the topology

    +
    diff --git a/docs/6.16/classes/TopologyDescription.html b/docs/6.16/classes/TopologyDescription.html new file mode 100644 index 00000000000..50bdef00c59 --- /dev/null +++ b/docs/6.16/classes/TopologyDescription.html @@ -0,0 +1,25 @@ +TopologyDescription | mongodb

    Class TopologyDescription

    Representation of a deployment of servers

    +

    Constructors

    Properties

    commonWireVersion: number
    compatibilityError?: string
    compatible: boolean
    heartbeatFrequencyMS: number
    localThresholdMS: number
    logicalSessionTimeoutMinutes: null | number
    maxElectionId: null | ObjectId
    maxSetVersion: null | number
    servers: Map<string, ServerDescription>
    setName: null | string
    stale: boolean

    Accessors

    Methods

    diff --git a/docs/6.16/classes/TopologyDescriptionChangedEvent.html b/docs/6.16/classes/TopologyDescriptionChangedEvent.html new file mode 100644 index 00000000000..04f2f0586b5 --- /dev/null +++ b/docs/6.16/classes/TopologyDescriptionChangedEvent.html @@ -0,0 +1,8 @@ +TopologyDescriptionChangedEvent | mongodb

    Class TopologyDescriptionChangedEvent

    Emitted when topology description changes.

    +

    Properties

    newDescription: TopologyDescription

    The new topology description

    +
    previousDescription: TopologyDescription

    The old topology description

    +
    topologyId: number

    A unique identifier for the topology

    +
    diff --git a/docs/6.16/classes/TopologyOpeningEvent.html b/docs/6.16/classes/TopologyOpeningEvent.html new file mode 100644 index 00000000000..e761e98623a --- /dev/null +++ b/docs/6.16/classes/TopologyOpeningEvent.html @@ -0,0 +1,4 @@ +TopologyOpeningEvent | mongodb

    Class TopologyOpeningEvent

    Emitted when topology is initialized.

    +

    Properties

    Properties

    topologyId: number

    A unique identifier for the topology

    +
    diff --git a/docs/6.16/classes/Transaction.html b/docs/6.16/classes/Transaction.html new file mode 100644 index 00000000000..9d3fba4f6b9 --- /dev/null +++ b/docs/6.16/classes/Transaction.html @@ -0,0 +1,10 @@ +Transaction | mongodb

    Class Transaction

    A class maintaining state related to a server transaction. Internal Only

    +

    Properties

    Accessors

    • get isActive(): boolean
    • Returns boolean

      Whether this session is presently in a transaction

      +
    diff --git a/docs/6.16/classes/TypedEventEmitter.html b/docs/6.16/classes/TypedEventEmitter.html new file mode 100644 index 00000000000..23c17e7c495 --- /dev/null +++ b/docs/6.16/classes/TypedEventEmitter.html @@ -0,0 +1,425 @@ +TypedEventEmitter | mongodb

    Class TypedEventEmitter<Events>

    Typescript type safe event emitter

    +

    Type Parameters

    Hierarchy (view full)

    Constructors

    Properties

    captureRejections: boolean

    Value: boolean

    +

    Change the default captureRejections option on all new EventEmitter objects.

    +

    v13.4.0, v12.16.0

    +
    captureRejectionSymbol: typeof captureRejectionSymbol

    Value: Symbol.for('nodejs.rejection')

    +

    See how to write a custom rejection handler.

    +

    v13.4.0, v12.16.0

    +
    defaultMaxListeners: number

    By default, a maximum of 10 listeners can be registered for any single +event. This limit can be changed for individual EventEmitter instances +using the emitter.setMaxListeners(n) method. To change the default +for allEventEmitter instances, the events.defaultMaxListeners property +can be used. If this value is not a positive number, a RangeError is thrown.

    +

    Take caution when setting the events.defaultMaxListeners because the +change affects all EventEmitter instances, including those created before +the change is made. However, calling emitter.setMaxListeners(n) still has +precedence over events.defaultMaxListeners.

    +

    This is not a hard limit. The EventEmitter instance will allow +more listeners to be added but will output a trace warning to stderr indicating +that a "possible EventEmitter memory leak" has been detected. For any single +EventEmitter, the emitter.getMaxListeners() and emitter.setMaxListeners() methods can be used to +temporarily avoid this warning:

    +
    import { EventEmitter } from 'node:events';
    const emitter = new EventEmitter();
    emitter.setMaxListeners(emitter.getMaxListeners() + 1);
    emitter.once('event', () => {
    // do stuff
    emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
    }); +
    + +

    The --trace-warnings command-line flag can be used to display the +stack trace for such warnings.

    +

    The emitted warning can be inspected with process.on('warning') and will +have the additional emitter, type, and count properties, referring to +the event emitter instance, the event's name and the number of attached +listeners, respectively. +Its name property is set to 'MaxListenersExceededWarning'.

    +

    v0.11.2

    +
    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.

    +

    v13.6.0, v12.17.0

    +

    Methods

    • Type Parameters

      • K

      Parameters

      • error: Error
      • event: string | symbol
      • Rest...args: AnyRest

      Returns void

    • Alias for emitter.on(eventName, listener).

      +

      Type Parameters

      • EventKey extends string | number | symbol

      Parameters

      Returns this

      v0.1.26

      +
    • Alias for emitter.on(eventName, listener).

      +

      Parameters

      Returns this

      v0.1.26

      +
    • Alias for emitter.on(eventName, listener).

      +

      Parameters

      Returns this

      v0.1.26

      +
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +to each.

      +

      Returns true if the event had listeners, false otherwise.

      +
      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener +
      + +

      Type Parameters

      • EventKey extends string | number | symbol

      Parameters

      Returns boolean

      v0.1.26

      +
    • Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

      +
      import { EventEmitter } from 'node:events';

      const myEE = new EventEmitter();
      myEE.on('foo', () => {});
      myEE.on('bar', () => {});

      const sym = Symbol('symbol');
      myEE.on(sym, () => {});

      console.log(myEE.eventNames());
      // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
      + +

      Returns string[]

      v6.0.0

      +
    • Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to EventEmitter.defaultMaxListeners.

      +

      Returns number

      v1.0.0

      +
    • Returns the number of listeners listening for the event named eventName. +If listener is provided, it will return how many times the listener is found +in the list of the listeners of the event.

      +

      Type Parameters

      • EventKey extends string | number | symbol

      Parameters

      Returns number

      v3.2.0

      +
    • Returns a copy of the array of listeners for the event named eventName.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      });
      console.log(util.inspect(server.listeners('connection')));
      // Prints: [ [Function] ] +
      + +

      Type Parameters

      • EventKey extends string | number | symbol

      Parameters

      Returns Events[EventKey][]

      v0.1.26

      +
    • Alias for emitter.removeListener().

      +

      Type Parameters

      • EventKey extends string | number | symbol

      Parameters

      Returns this

      v10.0.0

      +
    • Alias for emitter.removeListener().

      +

      Parameters

      Returns this

      v10.0.0

      +
    • Alias for emitter.removeListener().

      +

      Parameters

      Returns this

      v10.0.0

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Type Parameters

      • EventKey extends string | number | symbol

      Parameters

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v0.1.101

      +
    • Adds the listener function to the end of the listeners array for the event +named eventName. No checks are made to see if the listener has already +been added. Multiple calls passing the same combination of eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      Returns this

      v0.1.101

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Type Parameters

      • EventKey extends string | number | symbol

      Parameters

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v0.3.0

      +
    • Adds a one-time listener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Parameters

      Returns this

      v0.3.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends string | number | symbol

      Parameters

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v6.0.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends string | number | symbol

      Parameters

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • event: CommonEvents
      • listener: ((eventName: string | symbol, listener: GenericListener) => void)

        The callback function

        +
          • (eventName, listener): void
          • Parameters

            Returns void

      Returns this

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v6.0.0

      +
    • Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

      +
      import { EventEmitter } from 'node:events';
      const emitter = new EventEmitter();
      emitter.once('log', () => console.log('log once'));

      // Returns a new Array with a function `onceWrapper` which has a property
      // `listener` which contains the original listener bound above
      const listeners = emitter.rawListeners('log');
      const logFnWrapper = listeners[0];

      // Logs "log once" to the console and does not unbind the `once` event
      logFnWrapper.listener();

      // Logs "log once" to the console and removes the listener
      logFnWrapper();

      emitter.on('log', () => console.log('log persistently'));
      // Will return a new Array with a single function bound by `.on()` above
      const newListeners = emitter.rawListeners('log');

      // Logs "log persistently" twice
      newListeners[0]();
      emitter.emit('log'); +
      + +

      Type Parameters

      • EventKey extends string | number | symbol

      Parameters

      Returns Events[EventKey][]

      v9.4.0

      +
    • Removes all listeners, or those of the specified eventName.

      +

      It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends string | number | symbol

      Parameters

      • Optionalevent: string | symbol | EventKey

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Type Parameters

      • EventKey extends string | number | symbol

      Parameters

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      + +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      + +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      Returns this

      v0.1.26

      +
    • By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set to Infinity (or 0) to indicate an unlimited number of listeners.

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • n: number

      Returns this

      v0.3.5

      +
    • Experimental

      Listens once to the abort event on the provided signal.

      +

      Listening to the abort event on abort signals is unsafe and may +lead to resource leaks since another third party with the signal can +call e.stopImmediatePropagation(). Unfortunately Node.js cannot change +this since it would violate the web standard. Additionally, the original +API makes it easy to forget to remove listeners.

      +

      This API allows safely using AbortSignals in Node.js APIs by solving these +two issues by listening to the event such that stopImmediatePropagation does +not prevent the listener from running.

      +

      Returns a disposable so that it may be unsubscribed from more easily.

      +
      import { addAbortListener } from 'node:events';

      function example(signal) {
      let disposable;
      try {
      signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
      disposable = addAbortListener(signal, (e) => {
      // Do something when signal is aborted.
      });
      } finally {
      disposable?.[Symbol.dispose]();
      }
      } +
      + +

      Parameters

      • signal: AbortSignal
      • resource: ((event: Event) => void)
          • (event): void
          • Parameters

            • event: Event

            Returns void

      Returns Disposable

      Disposable that removes the abort listener.

      +

      v20.5.0

      +
    • Returns a copy of the array of listeners for the event named eventName.

      +

      For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

      +

      For EventTargets this is the only way to get the event listeners for the +event target. 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<DefaultEventMap> | EventTarget
      • name: string | symbol

      Returns Function[]

      v15.2.0, v14.17.0

      +
    • Returns the currently set max amount of listeners.

      +

      For EventEmitters this behaves exactly the same as calling .getMaxListeners on +the emitter.

      +

      For EventTargets this is the only way to get the max event listeners for the +event target. If the number of event handlers on a single EventTarget exceeds +the max set, the EventTarget will print a warning.

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

      {
      const ee = new EventEmitter();
      console.log(getMaxListeners(ee)); // 10
      setMaxListeners(11, ee);
      console.log(getMaxListeners(ee)); // 11
      }
      {
      const et = new EventTarget();
      console.log(getMaxListeners(et)); // 10
      setMaxListeners(11, et);
      console.log(getMaxListeners(et)); // 11
      } +
      + +

      Parameters

      • emitter: EventEmitter<DefaultEventMap> | EventTarget

      Returns number

      v19.9.0

      +
    • A class method that returns the number of listeners for the given eventName registered on the given emitter.

      +
      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<DefaultEventMap>

        The emitter to query

        +
      • eventName: string | symbol

        The event name

        +

      Returns number

      v0.9.12

      +

      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'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

      +

      An AbortSignal can be used to cancel waiting on events:

      +
      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()); +
      + +

      Use the close option to specify an array of event names that will end the iteration:

      +
      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);
      ee.emit('close');
      });

      for await (const event of on(ee, 'foo', { close: ['close'] })) {
      console.log(event); // prints ['bar'] [42]
      }
      // the loop will exit after 'close' is emitted
      console.log('done'); // prints 'done' +
      + +

      Parameters

      • emitter: EventEmitter<DefaultEventMap>
      • eventName: string | symbol
      • Optionaloptions: StaticEventEmitterIteratorOptions

      Returns AsyncIterator<any[], any, any>

      An AsyncIterator that iterates eventName events emitted by the emitter

      +

      v13.6.0, v12.16.0

      +
    • Parameters

      • emitter: EventTarget
      • eventName: string
      • Optionaloptions: StaticEventEmitterIteratorOptions

      Returns AsyncIterator<any[], any, any>

    • 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.

      +

      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.

      +
      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. 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:

      +
      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:

      +
      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: EventEmitter<DefaultEventMap>
      • eventName: string | symbol
      • Optionaloptions: StaticEventEmitterOptions

      Returns Promise<any[]>

      v11.13.0, v10.16.0

      +
    • Parameters

      • emitter: EventTarget
      • eventName: string
      • Optionaloptions: StaticEventEmitterOptions

      Returns Promise<any[]>

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

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

      setMaxListeners(5, target, emitter); +
      + +

      Parameters

      • Optionaln: number

        A non-negative number. The maximum number of listeners per EventTarget event.

        +
      • Rest...eventTargets: (EventEmitter<DefaultEventMap> | EventTarget)[]

        Zero or more {EventTarget} or {EventEmitter} instances. If none are specified, n is set as the default max for all newly created {EventTarget} and {EventEmitter} +objects.

        +

      Returns void

      v15.4.0

      +
    diff --git a/docs/6.16/classes/UnorderedBulkOperation.html b/docs/6.16/classes/UnorderedBulkOperation.html new file mode 100644 index 00000000000..48df76a2d09 --- /dev/null +++ b/docs/6.16/classes/UnorderedBulkOperation.html @@ -0,0 +1,22 @@ +UnorderedBulkOperation | mongodb

    Class UnorderedBulkOperation

    Hierarchy (view full)

    Properties

    isOrdered: boolean
    operationId?: number

    Accessors

    Methods

    • Builds a find operation for an update/updateOne/delete/deleteOne/replaceOne. +Returns a builder object used to complete the definition of the operation.

      +

      Parameters

      Returns FindOperators

      const bulkOp = collection.initializeOrderedBulkOp();

      // Add an updateOne to the bulkOp
      bulkOp.find({ a: 1 }).updateOne({ $set: { b: 2 } });

      // Add an updateMany to the bulkOp
      bulkOp.find({ c: 3 }).update({ $set: { d: 4 } });

      // Add an upsert
      bulkOp.find({ e: 5 }).upsert().updateOne({ $set: { f: 6 } });

      // Add a deletion
      bulkOp.find({ g: 7 }).deleteOne();

      // Add a multi deletion
      bulkOp.find({ h: 8 }).delete();

      // Add a replaceOne
      bulkOp.find({ i: 9 }).replaceOne({writeConcern: { j: 10 }});

      // Update using a pipeline (requires Mongodb 4.2 or higher)
      bulk.find({ k: 11, y: { $exists: true }, z: { $exists: true } }).updateOne([
      { $set: { total: { $sum: [ '$y', '$z' ] } } }
      ]);

      // All of the ops will now be executed
      await bulkOp.execute(); +
      + +
    diff --git a/docs/6.16/classes/WriteConcern.html b/docs/6.16/classes/WriteConcern.html new file mode 100644 index 00000000000..23ee4268b73 --- /dev/null +++ b/docs/6.16/classes/WriteConcern.html @@ -0,0 +1,30 @@ +WriteConcern | mongodb

    Class WriteConcern

    A MongoDB WriteConcern, which describes the level of acknowledgement +requested from MongoDB for write operations.

    +

    Constructors

    Properties

    Methods

    Constructors

    • Constructs a WriteConcern from the write concern properties.

      +

      Parameters

      • Optionalw: W

        request acknowledgment that the write operation has propagated to a specified number of mongod instances or to mongod instances with specified tags.

        +
      • OptionalwtimeoutMS: number

        specify a time limit to prevent write operations from blocking indefinitely

        +
      • Optionaljournal: boolean

        request acknowledgment that the write operation has been written to the on-disk journal

        +
      • Optionalfsync: boolean | 1

        equivalent to the j option. Is deprecated and will be removed in the next major version.

        +

      Returns WriteConcern

    Properties

    fsync?: boolean | 1

    Equivalent to the j option.

    +

    Will be removed in the next major version. Please use journal.

    +
    j?: boolean

    Request acknowledgment that the write operation has been written to the on-disk journal.

    +

    Will be removed in the next major version. Please use journal.

    +
    journal?: boolean

    Request acknowledgment that the write operation has been written to the on-disk journal

    +
    w?: W

    Request acknowledgment that the write operation has propagated to a specified number of mongod instances or to mongod instances with specified tags. +If w is 0 and is set on a write operation, the server will not send a response.

    +
    wtimeout?: number

    Specify a time limit to prevent write operations from blocking indefinitely.

    +

    Will be removed in the next major version. Please use wtimeoutMS.

    +
    wtimeoutMS?: number

    Specify a time limit to prevent write operations from blocking indefinitely.

    +

    Methods

    diff --git a/docs/6.16/classes/WriteConcernError.html b/docs/6.16/classes/WriteConcernError.html new file mode 100644 index 00000000000..9bffdebabe2 --- /dev/null +++ b/docs/6.16/classes/WriteConcernError.html @@ -0,0 +1,11 @@ +WriteConcernError | mongodb

    Class WriteConcernError

    An error representing a failure by the server to apply the requested write concern to the bulk operation.

    +

    Constructors

    Accessors

    Methods

    Constructors

    Accessors

    • get code(): undefined | number
    • Write concern error code.

      +

      Returns undefined | number

    • get errmsg(): undefined | string
    • Write concern error message.

      +

      Returns undefined | string

    Methods

    diff --git a/docs/6.16/classes/WriteError.html b/docs/6.16/classes/WriteError.html new file mode 100644 index 00000000000..4591ae40b64 --- /dev/null +++ b/docs/6.16/classes/WriteError.html @@ -0,0 +1,16 @@ +WriteError | mongodb

    Class WriteError

    An error that occurred during a BulkWrite on the server.

    +

    Constructors

    Properties

    err +

    Accessors

    Methods

    Constructors

    Properties

    Accessors

    • get errmsg(): undefined | string
    • WriteError message.

      +

      Returns undefined | string

    Methods

    • Returns {
          code: number;
          errmsg?: string;
          index: number;
          op: Document;
      }

      • code: number
      • Optionalerrmsg?: string
      • index: number
      • op: Document
    diff --git a/docs/6.16/functions/BSON.calculateObjectSize.html b/docs/6.16/functions/BSON.calculateObjectSize.html new file mode 100644 index 00000000000..54c82d9b867 --- /dev/null +++ b/docs/6.16/functions/BSON.calculateObjectSize.html @@ -0,0 +1,4 @@ +calculateObjectSize | mongodb

    Function calculateObjectSize

    • Calculate the bson size for a passed in Javascript object.

      +

      Parameters

      Returns number

      size of BSON object in bytes

      +
    diff --git a/docs/6.16/functions/BSON.deserialize.html b/docs/6.16/functions/BSON.deserialize.html new file mode 100644 index 00000000000..d5af3037f64 --- /dev/null +++ b/docs/6.16/functions/BSON.deserialize.html @@ -0,0 +1,4 @@ +deserialize | mongodb

    Function deserialize

    • Deserialize data as BSON.

      +

      Parameters

      • buffer: Uint8Array

        the buffer containing the serialized set of BSON documents.

        +
      • Optionaloptions: DeserializeOptions

      Returns Document

      returns the deserialized Javascript Object.

      +
    diff --git a/docs/6.16/functions/BSON.deserializeStream.html b/docs/6.16/functions/BSON.deserializeStream.html new file mode 100644 index 00000000000..678b8409809 --- /dev/null +++ b/docs/6.16/functions/BSON.deserializeStream.html @@ -0,0 +1,9 @@ +deserializeStream | mongodb

    Function deserializeStream

    • Deserialize stream data as BSON documents.

      +

      Parameters

      • data: Uint8Array | ArrayBuffer

        the buffer containing the serialized set of BSON documents.

        +
      • startIndex: number

        the start index in the data Buffer where the deserialization is to start.

        +
      • numberOfDocuments: number

        number of documents to deserialize.

        +
      • documents: Document[]

        an array where to store the deserialized documents.

        +
      • docStartIndex: number

        the index in the documents array from where to start inserting documents.

        +
      • options: DeserializeOptions

        additional options used for the deserialization.

        +

      Returns number

      next index in the buffer after deserialization x numbers of documents.

      +
    diff --git a/docs/6.16/functions/BSON.serialize.html b/docs/6.16/functions/BSON.serialize.html new file mode 100644 index 00000000000..05197e8aad1 --- /dev/null +++ b/docs/6.16/functions/BSON.serialize.html @@ -0,0 +1,4 @@ +serialize | mongodb

    Function serialize

    • Serialize a Javascript object.

      +

      Parameters

      Returns Uint8Array

      Buffer object containing the serialized object.

      +
    diff --git a/docs/6.16/functions/BSON.serializeWithBufferAndIndex.html b/docs/6.16/functions/BSON.serializeWithBufferAndIndex.html new file mode 100644 index 00000000000..81def7b55ad --- /dev/null +++ b/docs/6.16/functions/BSON.serializeWithBufferAndIndex.html @@ -0,0 +1,6 @@ +serializeWithBufferAndIndex | mongodb

    Function serializeWithBufferAndIndex

    • Serialize a Javascript object using a predefined Buffer and index into the buffer, +useful when pre-allocating the space for serialization.

      +

      Parameters

      • object: Document

        the Javascript object to serialize.

        +
      • finalBuffer: Uint8Array

        the Buffer you pre-allocated to store the serialized BSON object.

        +
      • Optionaloptions: SerializeOptions

      Returns number

      the index pointing to the last written byte in the buffer.

      +
    diff --git a/docs/6.16/functions/BSON.setInternalBufferSize.html b/docs/6.16/functions/BSON.setInternalBufferSize.html new file mode 100644 index 00000000000..417e5f24662 --- /dev/null +++ b/docs/6.16/functions/BSON.setInternalBufferSize.html @@ -0,0 +1,3 @@ +setInternalBufferSize | mongodb

    Function setInternalBufferSize

    • Sets the size of the internal serialization buffer.

      +

      Parameters

      • size: number

        The desired size for the internal serialization buffer in bytes

        +

      Returns void

    diff --git a/docs/6.16/functions/configureExplicitResourceManagement.html b/docs/6.16/functions/configureExplicitResourceManagement.html new file mode 100644 index 00000000000..67fa6bb6422 --- /dev/null +++ b/docs/6.16/functions/configureExplicitResourceManagement.html @@ -0,0 +1,11 @@ +configureExplicitResourceManagement | mongodb

    Function configureExplicitResourceManagement

    • Beta Experimental

      Attaches Symbol.asyncDispose methods to the MongoClient, Cursors, sessions and change streams +if Symbol.asyncDispose is defined.

      +

      It's usually not necessary to call this method - the driver attempts to attach these methods +itself when its loaded. However, sometimes the driver may be loaded before Symbol.asyncDispose +is defined, in which case it is necessary to call this method directly. This can happen if the +application is polyfilling Symbol.asyncDispose.

      +

      Example:

      +
      import { configureExplicitResourceManagement, MongoClient } from 'mongodb/lib/beta';

      Symbol.asyncDispose ??= Symbol('dispose');
      load();

      await using client = new MongoClient(...); +
      + +

      Returns void

    diff --git a/docs/6.16/hierarchy.html b/docs/6.16/hierarchy.html new file mode 100644 index 00000000000..1ed0cb670d9 --- /dev/null +++ b/docs/6.16/hierarchy.html @@ -0,0 +1 @@ +mongodb

    mongodb

    Class Hierarchy

    diff --git a/docs/6.16/index.html b/docs/6.16/index.html new file mode 100644 index 00000000000..69dbd993520 --- /dev/null +++ b/docs/6.16/index.html @@ -0,0 +1,290 @@ +mongodb

    mongodb

    MongoDB Node.js Driver

    The official MongoDB driver for Node.js.

    +

    Upgrading to version 6? Take a look at our upgrade guide here!

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SiteLink
    Documentationwww.mongodb.com/docs/drivers/node
    API Docsmongodb.github.io/node-mongodb-native
    npm packagewww.npmjs.com/package/mongodb
    MongoDBwww.mongodb.com
    MongoDB Universitylearn.mongodb.com
    MongoDB Developer Centerwww.mongodb.com/developer
    Stack Overflowstackoverflow.com
    Source Codegithub1.v50.ltd/mongodb/node-mongodb-native
    Upgrade to v6etc/notes/CHANGES_6.0.0.md
    ContributingCONTRIBUTING.md
    ChangelogHISTORY.md
    +

    Releases are created automatically and signed using the Node team's GPG key. This applies to the git tag as well as all release packages provided as part of a GitHub release. To verify the provided packages, download the key and import it using gpg:

    +
    gpg --import node-driver.asc
    +
    + +

    The GitHub release contains a detached signature file for the NPM package (named +mongodb-X.Y.Z.tgz.sig).

    +

    The following command returns the link npm package.

    +
    npm view mongodb@vX.Y.Z dist.tarball
    +
    + +

    Using the result of the above command, a curl command can return the official npm package for the release.

    +

    To verify the integrity of the downloaded package, run the following command:

    +
    gpg --verify mongodb-X.Y.Z.tgz.sig mongodb-X.Y.Z.tgz
    +
    + +
    +

    [!Note] +No verification is done when using npm to install the package. The contents of the Github tarball and npm's tarball are identical.

    +
    +

    Think you’ve found a bug? Want to see a new feature in node-mongodb-native? Please open a +case in our issue management tool, JIRA:

    +
      +
    • Create an account and login jira.mongodb.org.
    • +
    • Navigate to the NODE project jira.mongodb.org/browse/NODE.
    • +
    • Click Create Issue - Please provide as much information as possible about the issue type and how to reproduce it.
    • +
    +

    Bug reports in JIRA for all driver projects (i.e. NODE, PYTHON, CSHARP, JAVA) and the +Core Server (i.e. SERVER) project are public.

    +

    For issues with, questions about, or feedback for the Node.js driver, please look into our support channels. Please do not email any of the driver developers directly with issues or questions - you're more likely to get an answer on the MongoDB Community Forums.

    +

    Change history can be found in HISTORY.md.

    +

    The driver currently supports 4.0+ servers.

    +

    ** 4.0 support is deprecated and support will be removed in an upcoming driver release. **

    +

    For exhaustive server and runtime version compatibility matrices, please refer to the following links:

    + +

    The following table describes add-on component version compatibility for the Node.js driver. Only packages with versions in these supported ranges are stable when used in combination.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Componentmongodb@3.xmongodb@4.xmongodb@5.xmongodb@<6.12mongodb@>=6.12
    bson^1.0.0^4.0.0^5.0.0^6.0.0^6.0.0
    bson-ext^1.0.0 || ^2.0.0^4.0.0N/AN/AN/A
    kerberos^1.0.0^1.0.0 || ^2.0.0^1.0.0 || ^2.0.0^2.0.1^2.0.1
    mongodb-client-encryption^1.0.0^1.0.0 || ^2.0.0^2.3.0^6.0.0^6.0.0
    mongodb-legacyN/A^4.0.0^5.0.0^6.0.0^6.0.0
    @mongodb-js/zstdN/A^1.0.0^1.0.0^1.1.0^1.1.0 || ^2.0.0
    +

    We recommend using the latest version of typescript, however we currently ensure the driver's public types compile against typescript@4.4.0. +This is the lowest typescript version guaranteed to work with our driver: older versions may or may not work - use at your own risk. +Since typescript does not restrict breaking changes to major versions, we consider this support best effort. +If you run into any unexpected compiler failures against our supported TypeScript versions, please let us know by filing an issue on our JIRA.

    +

    Additionally, our Typescript types are compatible with the ECMAScript standard for our minimum supported Node version. Currently, our Typescript targets es2021.

    +

    The recommended way to get started using the Node.js 5.x driver is by using the npm (Node Package Manager) to install the dependency in your project.

    +

    After you've created your own project using npm init, you can run:

    +
    npm install mongodb
    +
    + +

    This will download the MongoDB driver and add a dependency entry in your package.json file.

    +

    If you are a Typescript user, you will need the Node.js type definitions to use the driver's definitions:

    +
    npm install -D @types/node
    +
    + +

    The MongoDB driver can optionally be enhanced by the following feature packages:

    +

    Maintained by MongoDB:

    + +

    Some of these packages include native C++ extensions. +Consult the trouble shooting guide here if you run into compilation issues.

    +

    Third party:

    + +

    This guide will show you how to set up a simple application using Node.js and MongoDB. Its scope is only how to set up the driver and perform the simple CRUD operations. For more in-depth coverage, see the official documentation.

    +

    First, create a directory where your application will live.

    +
    mkdir myProject
    cd myProject +
    + +

    Enter the following command and answer the questions to create the initial structure for your new project:

    +
    npm init -y
    +
    + +

    Next, install the driver as a dependency.

    +
    npm install mongodb
    +
    + +

    For complete MongoDB installation instructions, see the manual.

    +
      +
    1. Download the right MongoDB version from MongoDB
    2. +
    3. Create a database directory (in this case under /data).
    4. +
    5. Install and start a mongod process.
    6. +
    +
    mongod --dbpath=/data
    +
    + +

    You should see the mongod process start up and print some status information.

    +

    Create a new app.js file and add the following code to try out some basic CRUD +operations using the MongoDB driver.

    +

    Add code to connect to the server and the database myProject:

    +
    +

    NOTE: Resolving DNS Connection issues

    +

    Node.js 18 changed the default DNS resolution ordering from always prioritizing IPv4 to the ordering +returned by the DNS provider. In some environments, this can result in localhost resolving to +an IPv6 address instead of IPv4 and a consequent failure to connect to the server.

    +

    This can be resolved by:

    +
      +
    • specifying the IP address family using the MongoClient family option (MongoClient(<uri>, { family: 4 } ))
    • +
    • launching mongod or mongos with the ipv6 flag enabled (--ipv6 mongod option documentation)
    • +
    • using a host of 127.0.0.1 in place of localhost
    • +
    • specifying the DNS resolution ordering with the --dns-resolution-order Node.js command line argument (e.g. node --dns-resolution-order=ipv4first)
    • +
    +
    +
    const { MongoClient } = require('mongodb');
    // or as an es module:
    // import { MongoClient } from 'mongodb'

    // Connection URL
    const url = 'mongodb://localhost:27017';
    const client = new MongoClient(url);

    // Database Name
    const dbName = 'myProject';

    async function main() {
    // Use connect method to connect to the server
    await client.connect();
    console.log('Connected successfully to server');
    const db = client.db(dbName);
    const collection = db.collection('documents');

    // the following code examples can be pasted here...

    return 'done.';
    }

    main()
    .then(console.log)
    .catch(console.error)
    .finally(() => client.close()); +
    + +

    Run your app from the command line with:

    +
    node app.js
    +
    + +

    The application should print Connected successfully to server to the console.

    +

    Add to app.js the following function which uses the insertMany +method to add three documents to the documents collection.

    +
    const insertResult = await collection.insertMany([{ a: 1 }, { a: 2 }, { a: 3 }]);
    console.log('Inserted documents =>', insertResult); +
    + +

    The insertMany command returns an object with information about the insert operations.

    +

    Add a query that returns all the documents.

    +
    const findResult = await collection.find({}).toArray();
    console.log('Found documents =>', findResult); +
    + +

    This query returns all the documents in the documents collection. +If you add this below the insertMany example, you'll see the documents you've inserted.

    +

    Add a query filter to find only documents which meet the query criteria.

    +
    const filteredDocs = await collection.find({ a: 3 }).toArray();
    console.log('Found documents filtered by { a: 3 } =>', filteredDocs); +
    + +

    Only the documents which match 'a' : 3 should be returned.

    +

    The following operation updates a document in the documents collection.

    +
    const updateResult = await collection.updateOne({ a: 3 }, { $set: { b: 1 } });
    console.log('Updated documents =>', updateResult); +
    + +

    The method updates the first document where the field a is equal to 3 by adding a new field b to the document set to 1. updateResult contains information about whether there was a matching document to update or not.

    +

    Remove the document where the field a is equal to 3.

    +
    const deleteResult = await collection.deleteMany({ a: 3 });
    console.log('Deleted documents =>', deleteResult); +
    + +

    Indexes can improve your application's +performance. The following function creates an index on the a field in the +documents collection.

    +
    const indexName = await collection.createIndex({ a: 1 });
    console.log('index name =', indexName); +
    + +

    For more detailed information, see the indexing strategies page.

    +

    If you need to filter certain errors from our driver, we have a helpful tree of errors described in etc/notes/errors.md.

    +

    It is our recommendation to use instanceof checks on errors and to avoid relying on parsing error.message and error.name strings in your code. +We guarantee instanceof checks will pass according to semver guidelines, but errors may be sub-classed or their messages may change at any time, even patch releases, as we see fit to increase the helpfulness of the errors.

    +

    Any new errors we add to the driver will directly extend an existing error class and no existing error will be moved to a different parent class outside of a major release. +This means instanceof will always be able to accurately capture the errors that our driver throws.

    +
    const client = new MongoClient(url);
    await client.connect();
    const collection = client.db().collection('collection');

    try {
    await collection.insertOne({ _id: 1 });
    await collection.insertOne({ _id: 1 }); // duplicate key error
    } catch (error) {
    if (error instanceof MongoServerError) {
    console.log(`Error worth logging: ${error}`); // special case for some reason
    }
    throw error; // still want to crash
    } +
    + +

    If you need to test with a change from the latest main branch, our mongodb npm package has nightly versions released under the nightly tag.

    +
    npm install mongodb@nightly
    +
    + +

    Nightly versions are published regardless of testing outcome. +This means there could be semantic breakages or partially implemented features. +The nightly build is not suitable for production use.

    + +

    Apache 2.0

    +

    © 2012-present MongoDB Contributors
    +© 2009-2012 Christian Amor Kvalheim

    +
    diff --git a/docs/6.16/interfaces/AWSCredentials.html b/docs/6.16/interfaces/AWSCredentials.html new file mode 100644 index 00000000000..7333fe33a6a --- /dev/null +++ b/docs/6.16/interfaces/AWSCredentials.html @@ -0,0 +1,7 @@ +AWSCredentials | mongodb

    Interface AWSCredentials

    Copy of the AwsCredentialIdentityProvider interface from smithy/types, +the return type of the aws-sdk's fromNodeProviderChain().provider().

    +
    interface AWSCredentials {
        accessKeyId: string;
        expiration?: Date;
        secretAccessKey: string;
        sessionToken?: string;
    }

    Properties

    accessKeyId: string
    expiration?: Date
    secretAccessKey: string
    sessionToken?: string
    diff --git a/docs/6.16/interfaces/AWSEncryptionKeyOptions.html b/docs/6.16/interfaces/AWSEncryptionKeyOptions.html new file mode 100644 index 00000000000..10161d798a8 --- /dev/null +++ b/docs/6.16/interfaces/AWSEncryptionKeyOptions.html @@ -0,0 +1,8 @@ +AWSEncryptionKeyOptions | mongodb

    Interface AWSEncryptionKeyOptions

    Configuration options for making an AWS encryption key

    +
    interface AWSEncryptionKeyOptions {
        endpoint?: string;
        key: string;
        region: string;
    }

    Properties

    Properties

    endpoint?: string

    An alternate host to send KMS requests to. May include port number.

    +
    key: string

    The Amazon Resource Name (ARN) to the AWS customer master key (CMK)

    +
    region: string

    The AWS region of the KMS

    +
    diff --git a/docs/6.16/interfaces/AWSKMSProviderConfiguration.html b/docs/6.16/interfaces/AWSKMSProviderConfiguration.html new file mode 100644 index 00000000000..c3f5f74e8e4 --- /dev/null +++ b/docs/6.16/interfaces/AWSKMSProviderConfiguration.html @@ -0,0 +1,8 @@ +AWSKMSProviderConfiguration | mongodb

    Interface AWSKMSProviderConfiguration

    interface AWSKMSProviderConfiguration {
        accessKeyId: string;
        secretAccessKey: string;
        sessionToken?: string;
    }

    Properties

    accessKeyId: string

    The access key used for the AWS KMS provider

    +
    secretAccessKey: string

    The secret access key used for the AWS KMS provider

    +
    sessionToken?: string

    An optional AWS session token that will be used as the +X-Amz-Security-Token header for AWS requests.

    +
    diff --git a/docs/6.16/interfaces/AbstractCursorOptions.html b/docs/6.16/interfaces/AbstractCursorOptions.html new file mode 100644 index 00000000000..9a1f87db05a --- /dev/null +++ b/docs/6.16/interfaces/AbstractCursorOptions.html @@ -0,0 +1,87 @@ +AbstractCursorOptions | mongodb

    Interface AbstractCursorOptions

    interface AbstractCursorOptions {
        awaitData?: boolean;
        batchSize?: number;
        bsonRegExp?: boolean;
        checkKeys?: boolean;
        comment?: unknown;
        enableUtf8Validation?: boolean;
        fieldsAsRaw?: Document;
        ignoreUndefined?: boolean;
        maxAwaitTimeMS?: number;
        maxTimeMS?: number;
        noCursorTimeout?: boolean;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        serializeFunctions?: boolean;
        session?: ClientSession;
        tailable?: boolean;
        timeoutMode?: CursorTimeoutMode;
        timeoutMS?: number;
        useBigInt64?: boolean;
    }

    Hierarchy (view full)

    Properties

    awaitData?: boolean

    If awaitData is set to true, when the cursor reaches the end of the capped collection, +MongoDB blocks the query thread for a period of time waiting for new data to arrive. +When new data is inserted into the capped collection, the blocked thread is signaled +to wake up and return the next batch to the client.

    +
    batchSize?: number

    Specifies the number of documents to return in each response from MongoDB

    +
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    maxAwaitTimeMS?: number

    When applicable maxAwaitTimeMS controls the amount of time subsequent getMores +that a cursor uses to fetch more data should take. (ex. cursor.next())

    +
    maxTimeMS?: number

    When applicable maxTimeMS controls the amount of time the initial command +that constructs a cursor should take. (ex. find, aggregate, listCollections)

    +
    noCursorTimeout?: boolean
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike
    readPreference?: ReadPreferenceLike
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession
    tailable?: boolean

    By default, MongoDB will automatically close a cursor when the +client has exhausted all results in the cursor. However, for capped collections +you may use a Tailable Cursor that remains open after the client exhausts +the results in the initial cursor.

    +
    timeoutMode?: CursorTimeoutMode

    Specifies how timeoutMS is applied to the cursor. Can be either 'cursorLifeTime' or 'iteration' +When set to 'iteration', the deadline specified by timeoutMS applies to each call of +cursor.next(). +When set to 'cursorLifetime', the deadline applies to the life of the entire cursor.

    +

    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.

    +
    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. +
    + +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error. See AbstractCursorOptions.timeoutMode for more details on how this option applies to cursors.

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    diff --git a/docs/6.16/interfaces/AggregateOptions.html b/docs/6.16/interfaces/AggregateOptions.html new file mode 100644 index 00000000000..8307cbad5a1 --- /dev/null +++ b/docs/6.16/interfaces/AggregateOptions.html @@ -0,0 +1,88 @@ +AggregateOptions | mongodb

    Interface AggregateOptions

    interface AggregateOptions {
        allowDiskUse?: boolean;
        authdb?: string;
        batchSize?: number;
        bsonRegExp?: boolean;
        bypassDocumentValidation?: boolean;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        cursor?: Document;
        dbName?: string;
        enableUtf8Validation?: boolean;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        hint?: Hint;
        ignoreUndefined?: boolean;
        let?: Document;
        maxAwaitTimeMS?: number;
        maxTimeMS?: number;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        out?: string;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        serializeFunctions?: boolean;
        session?: ClientSession;
        timeoutMS?: number;
        useBigInt64?: boolean;
        willRetryWrite?: boolean;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    allowDiskUse?: boolean

    allowDiskUse lets the server know if it can use disk to store temporary results for the aggregation (requires mongodb 2.6 >).

    +
    authdb?: string
    batchSize?: number

    The number of documents to return per batch. See aggregation documentation.

    +
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    bypassDocumentValidation?: boolean

    Allow driver to bypass schema validation.

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    collation?: CollationOptions

    Specify collation.

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    cursor?: Document

    Return the query as cursor, on 2.6 > it returns as a real cursor on pre 2.6 it returns as an emulated cursor.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +

    Specifies the verbosity mode for the explain output.

    +

    This API is deprecated in favor of collection.aggregate().explain() +or db.aggregate().explain().

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    hint?: Hint

    Add an index selection hint to an aggregation command

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    let?: Document

    Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0).

    +
    maxAwaitTimeMS?: number

    The maximum amount of time for the server to wait on new documents to satisfy a tailable cursor query.

    +
    maxTimeMS?: number

    Specifies a cumulative time limit in milliseconds for processing operations on the cursor. MongoDB interrupts the operation at the earliest following interrupt point.

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    out?: string
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest).

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    willRetryWrite?: boolean

    Write Concern as an object

    +
    diff --git a/docs/6.16/interfaces/AggregationCursorOptions.html b/docs/6.16/interfaces/AggregationCursorOptions.html new file mode 100644 index 00000000000..5db0b1cc56b --- /dev/null +++ b/docs/6.16/interfaces/AggregationCursorOptions.html @@ -0,0 +1,116 @@ +AggregationCursorOptions | mongodb

    Interface AggregationCursorOptions

    interface AggregationCursorOptions {
        allowDiskUse?: boolean;
        authdb?: string;
        awaitData?: boolean;
        batchSize?: number;
        bsonRegExp?: boolean;
        bypassDocumentValidation?: boolean;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        cursor?: Document;
        dbName?: string;
        enableUtf8Validation?: boolean;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        hint?: Hint;
        ignoreUndefined?: boolean;
        let?: Document;
        maxAwaitTimeMS?: number;
        maxTimeMS?: number;
        noCursorTimeout?: boolean;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        out?: string;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        serializeFunctions?: boolean;
        session?: ClientSession;
        tailable?: boolean;
        timeoutMode?: CursorTimeoutMode;
        timeoutMS?: number;
        useBigInt64?: boolean;
        willRetryWrite?: boolean;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    allowDiskUse?: boolean

    allowDiskUse lets the server know if it can use disk to store temporary results for the aggregation (requires mongodb 2.6 >).

    +
    authdb?: string
    awaitData?: boolean

    If awaitData is set to true, when the cursor reaches the end of the capped collection, +MongoDB blocks the query thread for a period of time waiting for new data to arrive. +When new data is inserted into the capped collection, the blocked thread is signaled +to wake up and return the next batch to the client.

    +
    batchSize?: number

    Specifies the number of documents to return in each response from MongoDB

    +
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    bypassDocumentValidation?: boolean

    Allow driver to bypass schema validation.

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    collation?: CollationOptions

    Specify collation.

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    cursor?: Document

    Return the query as cursor, on 2.6 > it returns as a real cursor on pre 2.6 it returns as an emulated cursor.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +

    Specifies the verbosity mode for the explain output.

    +

    This API is deprecated in favor of collection.aggregate().explain() +or db.aggregate().explain().

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    hint?: Hint

    Add an index selection hint to an aggregation command

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    let?: Document

    Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0).

    +
    maxAwaitTimeMS?: number

    When applicable maxAwaitTimeMS controls the amount of time subsequent getMores +that a cursor uses to fetch more data should take. (ex. cursor.next())

    +
    maxTimeMS?: number

    When applicable maxTimeMS controls the amount of time the initial command +that constructs a cursor should take. (ex. find, aggregate, listCollections)

    +
    noCursorTimeout?: boolean
    noResponse?: boolean
    omitReadPreference?: boolean
    out?: string
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest).

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    tailable?: boolean

    By default, MongoDB will automatically close a cursor when the +client has exhausted all results in the cursor. However, for capped collections +you may use a Tailable Cursor that remains open after the client exhausts +the results in the initial cursor.

    +
    timeoutMode?: CursorTimeoutMode

    Specifies how timeoutMS is applied to the cursor. Can be either 'cursorLifeTime' or 'iteration' +When set to 'iteration', the deadline specified by timeoutMS applies to each call of +cursor.next(). +When set to 'cursorLifetime', the deadline applies to the life of the entire cursor.

    +

    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.

    +
    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. +
    + +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error. See AbstractCursorOptions.timeoutMode for more details on how this option applies to cursors.

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    willRetryWrite?: boolean

    Write Concern as an object

    +
    diff --git a/docs/6.16/interfaces/AsyncDisposable.html b/docs/6.16/interfaces/AsyncDisposable.html new file mode 100644 index 00000000000..3c7734496f7 --- /dev/null +++ b/docs/6.16/interfaces/AsyncDisposable.html @@ -0,0 +1,2 @@ +AsyncDisposable | mongodb

    Interface AsyncDisposable

    interface AsyncDisposable {
        [asyncDispose](): Promise<void>;
    }

    Implemented by

    Methods

    diff --git a/docs/6.16/interfaces/Auth.html b/docs/6.16/interfaces/Auth.html new file mode 100644 index 00000000000..34931c78f3c --- /dev/null +++ b/docs/6.16/interfaces/Auth.html @@ -0,0 +1,5 @@ +Auth | mongodb

    Interface Auth

    interface Auth {
        password?: string;
        username?: string;
    }

    Properties

    Properties

    password?: string

    The password for auth

    +
    username?: string

    The username for auth

    +
    diff --git a/docs/6.16/interfaces/AuthMechanismProperties.html b/docs/6.16/interfaces/AuthMechanismProperties.html new file mode 100644 index 00000000000..4cd2052d9e8 --- /dev/null +++ b/docs/6.16/interfaces/AuthMechanismProperties.html @@ -0,0 +1,25 @@ +AuthMechanismProperties | mongodb

    Interface AuthMechanismProperties

    interface AuthMechanismProperties {
        ALLOWED_HOSTS?: string[];
        AWS_CREDENTIAL_PROVIDER?: AWSCredentialProvider;
        AWS_SESSION_TOKEN?: string;
        CANONICALIZE_HOST_NAME?: GSSAPICanonicalizationValue;
        ENVIRONMENT?:
            | "azure"
            | "gcp"
            | "test"
            | "k8s";
        OIDC_CALLBACK?: OIDCCallbackFunction;
        OIDC_HUMAN_CALLBACK?: OIDCCallbackFunction;
        SERVICE_HOST?: string;
        SERVICE_NAME?: string;
        SERVICE_REALM?: string;
        TOKEN_RESOURCE?: string;
    }

    Hierarchy (view full)

    Properties

    ALLOWED_HOSTS?: string[]

    Allowed hosts that OIDC auth can connect to.

    +
    AWS_CREDENTIAL_PROVIDER?: AWSCredentialProvider

    A custom AWS credential provider to use. An example using the AWS SDK default provider chain:

    +
    const client = new MongoClient(process.env.MONGODB_URI, {
    authMechanismProperties: {
    AWS_CREDENTIAL_PROVIDER: fromNodeProviderChain()
    }
    }); +
    + +

    Using a custom function that returns AWS credentials:

    +
    const client = new MongoClient(process.env.MONGODB_URI, {
    authMechanismProperties: {
    AWS_CREDENTIAL_PROVIDER: async () => {
    return {
    accessKeyId: process.env.ACCESS_KEY_ID,
    secretAccessKey: process.env.SECRET_ACCESS_KEY
    }
    }
    }
    }); +
    + +
    AWS_SESSION_TOKEN?: string
    CANONICALIZE_HOST_NAME?: GSSAPICanonicalizationValue
    ENVIRONMENT?:
        | "azure"
        | "gcp"
        | "test"
        | "k8s"

    The OIDC environment. Note that 'test' is for internal use only.

    +
    OIDC_CALLBACK?: OIDCCallbackFunction

    A user provided OIDC machine callback function.

    +
    OIDC_HUMAN_CALLBACK?: OIDCCallbackFunction

    A user provided OIDC human interacted callback function.

    +
    SERVICE_HOST?: string
    SERVICE_NAME?: string
    SERVICE_REALM?: string
    TOKEN_RESOURCE?: string

    The resource token for OIDC auth in Azure and GCP.

    +
    diff --git a/docs/6.16/interfaces/AutoEncryptionOptions.html b/docs/6.16/interfaces/AutoEncryptionOptions.html new file mode 100644 index 00000000000..5d801c043fc --- /dev/null +++ b/docs/6.16/interfaces/AutoEncryptionOptions.html @@ -0,0 +1,51 @@ +AutoEncryptionOptions | mongodb

    Interface AutoEncryptionOptions

    interface AutoEncryptionOptions {
        bypassAutoEncryption?: boolean;
        bypassQueryAnalysis?: boolean;
        credentialProviders?: CredentialProviders;
        encryptedFieldsMap?: Document;
        extraOptions?: {
            cryptSharedLibPath?: string;
            cryptSharedLibRequired?: boolean;
            mongocryptdBypassSpawn?: boolean;
            mongocryptdSpawnArgs?: string[];
            mongocryptdSpawnPath?: string;
            mongocryptdURI?: string;
        };
        keyVaultClient?: MongoClient;
        keyVaultNamespace?: string;
        kmsProviders?: KMSProviders;
        options?: {
            logger?: ((level: AutoEncryptionLoggerLevel, message: string) => void);
        };
        proxyOptions?: ProxyOptions;
        schemaMap?: Document;
        tlsOptions?: CSFLEKMSTlsOptions;
    }

    Properties

    bypassAutoEncryption?: boolean

    Allows the user to bypass auto encryption, maintaining implicit decryption

    +
    bypassQueryAnalysis?: boolean

    Allows users to bypass query analysis

    +
    credentialProviders?: CredentialProviders

    Configuration options for custom credential providers.

    +
    encryptedFieldsMap?: Document

    Supply a schema for the encrypted fields in the document

    +
    extraOptions?: {
        cryptSharedLibPath?: string;
        cryptSharedLibRequired?: boolean;
        mongocryptdBypassSpawn?: boolean;
        mongocryptdSpawnArgs?: string[];
        mongocryptdSpawnPath?: string;
        mongocryptdURI?: string;
    }

    Type declaration

    • OptionalcryptSharedLibPath?: string

      Full path to a MongoDB Crypt shared library to be used (instead of mongocryptd).

      +

      This needs to be the path to the file itself, not a directory. +It can be an absolute or relative path. If the path is relative and +its first component is $ORIGIN, it will be replaced by the directory +containing the mongodb-client-encryption native addon file. Otherwise, +the path will be interpreted relative to the current working directory.

      +

      Currently, loading different MongoDB Crypt shared library files from different +MongoClients in the same process is not supported.

      +

      If this option is provided and no MongoDB Crypt shared library could be loaded +from the specified location, creating the MongoClient will fail.

      +

      If this option is not provided and cryptSharedLibRequired is not specified, +the AutoEncrypter will attempt to spawn and/or use mongocryptd according +to the mongocryptd-specific extraOptions options.

      +

      Specifying a path prevents mongocryptd from being used as a fallback.

      +

      Requires the MongoDB Crypt shared library, available in MongoDB 6.0 or higher.

      +
    • OptionalcryptSharedLibRequired?: boolean

      If specified, never use mongocryptd and instead fail when the MongoDB Crypt +shared library could not be loaded.

      +

      This is always true when cryptSharedLibPath is specified.

      +

      Requires the MongoDB Crypt shared library, available in MongoDB 6.0 or higher.

      +
    • OptionalmongocryptdBypassSpawn?: boolean

      If true, autoEncryption will not attempt to spawn a mongocryptd before connecting

      +
    • OptionalmongocryptdSpawnArgs?: string[]

      Command line arguments to use when auto-spawning a mongocryptd

      +
    • OptionalmongocryptdSpawnPath?: string

      The path to the mongocryptd executable on the system

      +
    • OptionalmongocryptdURI?: string

      A local process the driver communicates with to determine how to encrypt values in a command. +Defaults to "mongodb://%2Fvar%2Fmongocryptd.sock" if domain sockets are available or "mongodb://localhost:27020" otherwise

      +
    keyVaultClient?: MongoClient

    A MongoClient used to fetch keys from a key vault

    +
    keyVaultNamespace?: string

    The namespace where keys are stored in the key vault

    +
    kmsProviders?: KMSProviders

    Configuration options that are used by specific KMS providers during key generation, encryption, and decryption.

    +
    options?: {
        logger?: ((level: AutoEncryptionLoggerLevel, message: string) => void);
    }

    Type declaration

    • Optionallogger?: ((level: AutoEncryptionLoggerLevel, message: string) => void)

      An optional hook to catch logging messages from the underlying encryption engine

      +
    proxyOptions?: ProxyOptions
    schemaMap?: Document

    A map of namespaces to a local JSON schema for encryption

    +

    NOTE: Supplying options.schemaMap provides more security than relying on JSON Schemas obtained from the server. +It protects against a malicious server advertising a false JSON Schema, which could trick the client into sending decrypted data that should be encrypted. +Schemas supplied in the schemaMap only apply to configuring automatic encryption for Client-Side Field Level Encryption. +Other validation rules in the JSON schema will not be enforced by the driver and will result in an error.

    +
    tlsOptions?: CSFLEKMSTlsOptions

    The TLS options to use connecting to the KMS provider

    +
    diff --git a/docs/6.16/interfaces/AzureEncryptionKeyOptions.html b/docs/6.16/interfaces/AzureEncryptionKeyOptions.html new file mode 100644 index 00000000000..8b3d2383bfe --- /dev/null +++ b/docs/6.16/interfaces/AzureEncryptionKeyOptions.html @@ -0,0 +1,8 @@ +AzureEncryptionKeyOptions | mongodb

    Interface AzureEncryptionKeyOptions

    Configuration options for making an Azure encryption key

    +
    interface AzureEncryptionKeyOptions {
        keyName: string;
        keyVaultEndpoint: string;
        keyVersion?: string;
    }

    Properties

    keyName: string

    Key name

    +
    keyVaultEndpoint: string

    Key vault URL, typically <name>.vault.azure.net

    +
    keyVersion?: string

    Key version

    +
    diff --git a/docs/6.16/interfaces/BSON.BSONRegExpExtended.html b/docs/6.16/interfaces/BSON.BSONRegExpExtended.html new file mode 100644 index 00000000000..10d0054b5fd --- /dev/null +++ b/docs/6.16/interfaces/BSON.BSONRegExpExtended.html @@ -0,0 +1,2 @@ +BSONRegExpExtended | mongodb

    Interface BSONRegExpExtended

    interface BSONRegExpExtended {
        $regularExpression: {
            options: string;
            pattern: string;
        };
    }

    Properties

    Properties

    $regularExpression: {
        options: string;
        pattern: string;
    }
    diff --git a/docs/6.16/interfaces/BSON.BSONRegExpExtendedLegacy.html b/docs/6.16/interfaces/BSON.BSONRegExpExtendedLegacy.html new file mode 100644 index 00000000000..a73fcf3326c --- /dev/null +++ b/docs/6.16/interfaces/BSON.BSONRegExpExtendedLegacy.html @@ -0,0 +1,3 @@ +BSONRegExpExtendedLegacy | mongodb

    Interface BSONRegExpExtendedLegacy

    interface BSONRegExpExtendedLegacy {
        $options: string;
        $regex: string | BSONRegExp;
    }

    Properties

    Properties

    $options: string
    $regex: string | BSONRegExp
    diff --git a/docs/6.16/interfaces/BSON.BSONSymbolExtended.html b/docs/6.16/interfaces/BSON.BSONSymbolExtended.html new file mode 100644 index 00000000000..880549285fe --- /dev/null +++ b/docs/6.16/interfaces/BSON.BSONSymbolExtended.html @@ -0,0 +1,2 @@ +BSONSymbolExtended | mongodb

    Interface BSONSymbolExtended

    interface BSONSymbolExtended {
        $symbol: string;
    }

    Properties

    Properties

    $symbol: string
    diff --git a/docs/6.16/interfaces/BSON.BinaryExtended.html b/docs/6.16/interfaces/BSON.BinaryExtended.html new file mode 100644 index 00000000000..223e58f4652 --- /dev/null +++ b/docs/6.16/interfaces/BSON.BinaryExtended.html @@ -0,0 +1,2 @@ +BinaryExtended | mongodb

    Interface BinaryExtended

    interface BinaryExtended {
        $binary: {
            base64: string;
            subType: string;
        };
    }

    Properties

    Properties

    $binary: {
        base64: string;
        subType: string;
    }
    diff --git a/docs/6.16/interfaces/BSON.BinaryExtendedLegacy.html b/docs/6.16/interfaces/BSON.BinaryExtendedLegacy.html new file mode 100644 index 00000000000..e35fd702085 --- /dev/null +++ b/docs/6.16/interfaces/BSON.BinaryExtendedLegacy.html @@ -0,0 +1,3 @@ +BinaryExtendedLegacy | mongodb

    Interface BinaryExtendedLegacy

    interface BinaryExtendedLegacy {
        $binary: string;
        $type: string;
    }

    Properties

    Properties

    $binary: string
    $type: string
    diff --git a/docs/6.16/interfaces/BSON.CodeExtended.html b/docs/6.16/interfaces/BSON.CodeExtended.html new file mode 100644 index 00000000000..e5734be6246 --- /dev/null +++ b/docs/6.16/interfaces/BSON.CodeExtended.html @@ -0,0 +1,3 @@ +CodeExtended | mongodb

    Interface CodeExtended

    interface CodeExtended {
        $code: string;
        $scope?: Document;
    }

    Properties

    Properties

    $code: string
    $scope?: Document
    diff --git a/docs/6.16/interfaces/BSON.DBRefLike.html b/docs/6.16/interfaces/BSON.DBRefLike.html new file mode 100644 index 00000000000..b262ce38058 --- /dev/null +++ b/docs/6.16/interfaces/BSON.DBRefLike.html @@ -0,0 +1,4 @@ +DBRefLike | mongodb

    Interface DBRefLike

    interface DBRefLike {
        $db?: string;
        $id: ObjectId;
        $ref: string;
    }

    Properties

    Properties

    $db?: string
    $ref: string
    diff --git a/docs/6.16/interfaces/BSON.Decimal128Extended.html b/docs/6.16/interfaces/BSON.Decimal128Extended.html new file mode 100644 index 00000000000..cd6503ee19e --- /dev/null +++ b/docs/6.16/interfaces/BSON.Decimal128Extended.html @@ -0,0 +1,2 @@ +Decimal128Extended | mongodb

    Interface Decimal128Extended

    interface Decimal128Extended {
        $numberDecimal: string;
    }

    Properties

    Properties

    $numberDecimal: string
    diff --git a/docs/6.16/interfaces/BSON.DeserializeOptions.html b/docs/6.16/interfaces/BSON.DeserializeOptions.html new file mode 100644 index 00000000000..ce7b3d1a05a --- /dev/null +++ b/docs/6.16/interfaces/BSON.DeserializeOptions.html @@ -0,0 +1,32 @@ +DeserializeOptions | mongodb

    Interface DeserializeOptions

    interface DeserializeOptions {
        allowObjectSmallerThanBufferSize?: boolean;
        bsonRegExp?: boolean;
        fieldsAsRaw?: Document;
        index?: number;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        useBigInt64?: boolean;
        validation?: {
            utf8: boolean | Record<string, true> | Record<string, false>;
        };
    }

    Properties

    allowObjectSmallerThanBufferSize?: boolean

    allows the buffer to be larger than the parsed BSON object.

    +

    false

    +
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    index?: number

    Offset into buffer to begin reading document from

    +

    0

    +
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    validation?: {
        utf8: boolean | Record<string, true> | Record<string, false>;
    }

    Allows for opt-out utf-8 validation for all keys or +specified keys. Must be all true or all false.

    +
    // disables validation on all keys
    validation: { utf8: false }

    // enables validation only on specified keys a, b, and c
    validation: { utf8: { a: true, b: true, c: true } }

    // disables validation only on specified keys a, b
    validation: { utf8: { a: false, b: false } } +
    + +
    diff --git a/docs/6.16/interfaces/BSON.Document.html b/docs/6.16/interfaces/BSON.Document.html new file mode 100644 index 00000000000..54d88a3471a --- /dev/null +++ b/docs/6.16/interfaces/BSON.Document.html @@ -0,0 +1 @@ +Document | mongodb
    diff --git a/docs/6.16/interfaces/BSON.DoubleExtended.html b/docs/6.16/interfaces/BSON.DoubleExtended.html new file mode 100644 index 00000000000..4923b30564b --- /dev/null +++ b/docs/6.16/interfaces/BSON.DoubleExtended.html @@ -0,0 +1,2 @@ +DoubleExtended | mongodb

    Interface DoubleExtended

    interface DoubleExtended {
        $numberDouble: string;
    }

    Properties

    Properties

    $numberDouble: string
    diff --git a/docs/6.16/interfaces/BSON.Int32Extended.html b/docs/6.16/interfaces/BSON.Int32Extended.html new file mode 100644 index 00000000000..cd5d7572c1d --- /dev/null +++ b/docs/6.16/interfaces/BSON.Int32Extended.html @@ -0,0 +1,2 @@ +Int32Extended | mongodb

    Interface Int32Extended

    interface Int32Extended {
        $numberInt: string;
    }

    Properties

    Properties

    $numberInt: string
    diff --git a/docs/6.16/interfaces/BSON.LongExtended.html b/docs/6.16/interfaces/BSON.LongExtended.html new file mode 100644 index 00000000000..d12bef5d274 --- /dev/null +++ b/docs/6.16/interfaces/BSON.LongExtended.html @@ -0,0 +1,2 @@ +LongExtended | mongodb

    Interface LongExtended

    interface LongExtended {
        $numberLong: string;
    }

    Properties

    Properties

    $numberLong: string
    diff --git a/docs/6.16/interfaces/BSON.MaxKeyExtended.html b/docs/6.16/interfaces/BSON.MaxKeyExtended.html new file mode 100644 index 00000000000..a154337016e --- /dev/null +++ b/docs/6.16/interfaces/BSON.MaxKeyExtended.html @@ -0,0 +1,2 @@ +MaxKeyExtended | mongodb

    Interface MaxKeyExtended

    interface MaxKeyExtended {
        $maxKey: 1;
    }

    Properties

    Properties

    $maxKey: 1
    diff --git a/docs/6.16/interfaces/BSON.MinKeyExtended.html b/docs/6.16/interfaces/BSON.MinKeyExtended.html new file mode 100644 index 00000000000..e41484c4fe2 --- /dev/null +++ b/docs/6.16/interfaces/BSON.MinKeyExtended.html @@ -0,0 +1,2 @@ +MinKeyExtended | mongodb

    Interface MinKeyExtended

    interface MinKeyExtended {
        $minKey: 1;
    }

    Properties

    Properties

    $minKey: 1
    diff --git a/docs/6.16/interfaces/BSON.ObjectIdExtended.html b/docs/6.16/interfaces/BSON.ObjectIdExtended.html new file mode 100644 index 00000000000..53d41ad5b08 --- /dev/null +++ b/docs/6.16/interfaces/BSON.ObjectIdExtended.html @@ -0,0 +1,2 @@ +ObjectIdExtended | mongodb

    Interface ObjectIdExtended

    interface ObjectIdExtended {
        $oid: string;
    }

    Properties

    Properties

    $oid: string
    diff --git a/docs/6.16/interfaces/BSON.ObjectIdLike.html b/docs/6.16/interfaces/BSON.ObjectIdLike.html new file mode 100644 index 00000000000..9c1b80b5940 --- /dev/null +++ b/docs/6.16/interfaces/BSON.ObjectIdLike.html @@ -0,0 +1,4 @@ +ObjectIdLike | mongodb

    Interface ObjectIdLike

    interface ObjectIdLike {
        __id?: string;
        id: string | Uint8Array;
        toHexString(): string;
    }

    Properties

    Methods

    Properties

    __id?: string
    id: string | Uint8Array

    Methods

    • Returns string

    diff --git a/docs/6.16/interfaces/BSON.SerializeOptions.html b/docs/6.16/interfaces/BSON.SerializeOptions.html new file mode 100644 index 00000000000..2d080b82919 --- /dev/null +++ b/docs/6.16/interfaces/BSON.SerializeOptions.html @@ -0,0 +1,14 @@ +SerializeOptions | mongodb

    Interface SerializeOptions

    interface SerializeOptions {
        checkKeys?: boolean;
        ignoreUndefined?: boolean;
        index?: number;
        serializeFunctions?: boolean;
    }

    Properties

    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    index?: number

    the index in the buffer where we wish to start serializing into

    +

    0

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    diff --git a/docs/6.16/interfaces/BSON.TimestampExtended.html b/docs/6.16/interfaces/BSON.TimestampExtended.html new file mode 100644 index 00000000000..8bf31f783fc --- /dev/null +++ b/docs/6.16/interfaces/BSON.TimestampExtended.html @@ -0,0 +1,2 @@ +TimestampExtended | mongodb

    Interface TimestampExtended

    interface TimestampExtended {
        $timestamp: {
            i: number;
            t: number;
        };
    }

    Properties

    Properties

    $timestamp: {
        i: number;
        t: number;
    }
    diff --git a/docs/6.16/interfaces/BSONSerializeOptions.html b/docs/6.16/interfaces/BSONSerializeOptions.html new file mode 100644 index 00000000000..5828931b706 --- /dev/null +++ b/docs/6.16/interfaces/BSONSerializeOptions.html @@ -0,0 +1,44 @@ +BSONSerializeOptions | mongodb

    Interface BSONSerializeOptions

    BSON Serialization options.

    +
    interface BSONSerializeOptions {
        bsonRegExp?: boolean;
        checkKeys?: boolean;
        enableUtf8Validation?: boolean;
        fieldsAsRaw?: Document;
        ignoreUndefined?: boolean;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        serializeFunctions?: boolean;
        useBigInt64?: boolean;
    }

    Hierarchy (view full)

    Properties

    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    diff --git a/docs/6.16/interfaces/BulkWriteOperationError.html b/docs/6.16/interfaces/BulkWriteOperationError.html new file mode 100644 index 00000000000..95b3992e798 --- /dev/null +++ b/docs/6.16/interfaces/BulkWriteOperationError.html @@ -0,0 +1,6 @@ +BulkWriteOperationError | mongodb

    Interface BulkWriteOperationError

    interface BulkWriteOperationError {
        code: number;
        errInfo: Document;
        errmsg: string;
        index: number;
        op: Document | DeleteStatement | UpdateStatement;
    }

    Properties

    Properties

    code: number
    errInfo: Document
    errmsg: string
    index: number
    diff --git a/docs/6.16/interfaces/BulkWriteOptions.html b/docs/6.16/interfaces/BulkWriteOptions.html new file mode 100644 index 00000000000..b3e89cf0012 --- /dev/null +++ b/docs/6.16/interfaces/BulkWriteOptions.html @@ -0,0 +1,83 @@ +BulkWriteOptions | mongodb

    Interface BulkWriteOptions

    interface BulkWriteOptions {
        authdb?: string;
        bsonRegExp?: boolean;
        bypassDocumentValidation?: boolean;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        dbName?: string;
        enableUtf8Validation?: boolean;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        forceServerObjectId?: boolean;
        ignoreUndefined?: boolean;
        let?: Document;
        maxTimeMS?: number;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        ordered?: boolean;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        serializeFunctions?: boolean;
        session?: ClientSession;
        timeoutMS?: number;
        useBigInt64?: boolean;
        willRetryWrite?: boolean;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    authdb?: string
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    bypassDocumentValidation?: boolean

    Allow driver to bypass schema validation.

    +

    false - documents will be validated by default

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    collation?: CollationOptions

    Collation

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +

    Specifies the verbosity mode for the explain output.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    forceServerObjectId?: boolean

    Force server to assign _id values instead of driver.

    +

    false - the driver generates _id fields by default

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    let?: Document

    Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0).

    +
    maxTimeMS?: number

    maxTimeMS is a server-side time limit in milliseconds for processing an operation.

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    ordered?: boolean

    If true, when an insert fails, don't execute the remaining writes. +If false, continue with remaining inserts when one fails.

    +

    true - inserts are ordered by default

    +
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest).

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    willRetryWrite?: boolean

    Write Concern as an object

    +
    diff --git a/docs/6.16/interfaces/ChangeStreamCollModDocument.html b/docs/6.16/interfaces/ChangeStreamCollModDocument.html new file mode 100644 index 00000000000..4c5b0c0896b --- /dev/null +++ b/docs/6.16/interfaces/ChangeStreamCollModDocument.html @@ -0,0 +1,32 @@ +ChangeStreamCollModDocument | mongodb

    Interface ChangeStreamCollModDocument

    Only present when the showExpandedEvents flag is enabled.

    +
    interface ChangeStreamCollModDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        operationType: "modify";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted +change stream.

    +
    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. +For events that happened as part of a multi-document transaction, the associated change stream +notifications will have the same clusterTime value, namely the time when the transaction was committed. +On a sharded cluster, events that occur on different shards can have the same clusterTime but be +associated with different transactions or even not be associated with any transaction. +To identify events for a single transaction, you can use the combination of lsid and txnNumber in the change stream event document.

    +
    collectionUUID: Binary

    The UUID (Binary subtype 4) of the collection that the operation was performed on.

    +

    Only present when the showExpandedEvents flag is enabled.

    +

    NOTE: collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers +flag is enabled.

    +

    6.1.0

    +

    The identifier for the session associated with the transaction. +Only present if the operation is part of a multi-document transaction.

    +
    operationType: "modify"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +stage, events larger than 16MB will be split into multiple events and contain the +following information about which fragment the current event is.

    +
    txnNumber?: number

    The transaction number. +Only present if the operation is part of a multi-document transaction.

    +

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    +
    diff --git a/docs/6.16/interfaces/ChangeStreamCreateDocument.html b/docs/6.16/interfaces/ChangeStreamCreateDocument.html new file mode 100644 index 00000000000..d11233b31ec --- /dev/null +++ b/docs/6.16/interfaces/ChangeStreamCreateDocument.html @@ -0,0 +1,34 @@ +ChangeStreamCreateDocument | mongodb

    Interface ChangeStreamCreateDocument

    interface ChangeStreamCreateDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        nsType?: "timeseries" | "collection" | "view";
        operationType: "create";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted +change stream.

    +
    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. +For events that happened as part of a multi-document transaction, the associated change stream +notifications will have the same clusterTime value, namely the time when the transaction was committed. +On a sharded cluster, events that occur on different shards can have the same clusterTime but be +associated with different transactions or even not be associated with any transaction. +To identify events for a single transaction, you can use the combination of lsid and txnNumber in the change stream event document.

    +
    collectionUUID: Binary

    The UUID (Binary subtype 4) of the collection that the operation was performed on.

    +

    Only present when the showExpandedEvents flag is enabled.

    +

    NOTE: collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers +flag is enabled.

    +

    6.1.0

    +

    The identifier for the session associated with the transaction. +Only present if the operation is part of a multi-document transaction.

    +
    nsType?: "timeseries" | "collection" | "view"

    The type of the newly created object.

    +

    8.1.0

    +
    operationType: "create"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +stage, events larger than 16MB will be split into multiple events and contain the +following information about which fragment the current event is.

    +
    txnNumber?: number

    The transaction number. +Only present if the operation is part of a multi-document transaction.

    +

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    +
    diff --git a/docs/6.16/interfaces/ChangeStreamCreateIndexDocument.html b/docs/6.16/interfaces/ChangeStreamCreateIndexDocument.html new file mode 100644 index 00000000000..9eb4f99ca69 --- /dev/null +++ b/docs/6.16/interfaces/ChangeStreamCreateIndexDocument.html @@ -0,0 +1,36 @@ +ChangeStreamCreateIndexDocument | mongodb

    Interface ChangeStreamCreateIndexDocument

    Only present when the showExpandedEvents flag is enabled.

    +
    interface ChangeStreamCreateIndexDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        operationDescription?: Document;
        operationType: "createIndexes";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted +change stream.

    +
    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. +For events that happened as part of a multi-document transaction, the associated change stream +notifications will have the same clusterTime value, namely the time when the transaction was committed. +On a sharded cluster, events that occur on different shards can have the same clusterTime but be +associated with different transactions or even not be associated with any transaction. +To identify events for a single transaction, you can use the combination of lsid and txnNumber in the change stream event document.

    +
    collectionUUID: Binary

    The UUID (Binary subtype 4) of the collection that the operation was performed on.

    +

    Only present when the showExpandedEvents flag is enabled.

    +

    NOTE: collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers +flag is enabled.

    +

    6.1.0

    +

    The identifier for the session associated with the transaction. +Only present if the operation is part of a multi-document transaction.

    +
    operationDescription?: Document

    An description of the operation.

    +

    Only present when the showExpandedEvents flag is enabled.

    +

    6.1.0

    +
    operationType: "createIndexes"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +stage, events larger than 16MB will be split into multiple events and contain the +following information about which fragment the current event is.

    +
    txnNumber?: number

    The transaction number. +Only present if the operation is part of a multi-document transaction.

    +

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    +
    diff --git a/docs/6.16/interfaces/ChangeStreamDeleteDocument.html b/docs/6.16/interfaces/ChangeStreamDeleteDocument.html new file mode 100644 index 00000000000..89be1c75893 --- /dev/null +++ b/docs/6.16/interfaces/ChangeStreamDeleteDocument.html @@ -0,0 +1,42 @@ +ChangeStreamDeleteDocument | mongodb

    Interface ChangeStreamDeleteDocument<TSchema>

    interface ChangeStreamDeleteDocument<TSchema> {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        documentKey: {
            _id: InferIdType<TSchema>;
            [shardKey: string]: any;
        };
        fullDocumentBeforeChange?: TSchema;
        lsid?: ServerSessionId;
        ns: ChangeStreamNameSpace;
        operationType: "delete";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Type Parameters

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted +change stream.

    +
    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. +For events that happened as part of a multi-document transaction, the associated change stream +notifications will have the same clusterTime value, namely the time when the transaction was committed. +On a sharded cluster, events that occur on different shards can have the same clusterTime but be +associated with different transactions or even not be associated with any transaction. +To identify events for a single transaction, you can use the combination of lsid and txnNumber in the change stream event document.

    +
    collectionUUID: Binary

    The UUID (Binary subtype 4) of the collection that the operation was performed on.

    +

    Only present when the showExpandedEvents flag is enabled.

    +

    NOTE: collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers +flag is enabled.

    +

    6.1.0

    +
    documentKey: {
        _id: InferIdType<TSchema>;
        [shardKey: string]: any;
    }

    For unsharded collections this contains a single field _id. +For sharded collections, this will contain all the components of the shard key

    +
    fullDocumentBeforeChange?: TSchema

    Contains the pre-image of the modified or deleted document if the +pre-image is available for the change event and either 'required' or +'whenAvailable' was specified for the 'fullDocumentBeforeChange' option +when creating the change stream. If 'whenAvailable' was specified but the +pre-image is unavailable, this will be explicitly set to null.

    +

    The identifier for the session associated with the transaction. +Only present if the operation is part of a multi-document transaction.

    +

    Namespace the delete event occurred on

    +
    operationType: "delete"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +stage, events larger than 16MB will be split into multiple events and contain the +following information about which fragment the current event is.

    +
    txnNumber?: number

    The transaction number. +Only present if the operation is part of a multi-document transaction.

    +

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    +
    diff --git a/docs/6.16/interfaces/ChangeStreamDocumentCollectionUUID.html b/docs/6.16/interfaces/ChangeStreamDocumentCollectionUUID.html new file mode 100644 index 00000000000..002ad3ea0b6 --- /dev/null +++ b/docs/6.16/interfaces/ChangeStreamDocumentCollectionUUID.html @@ -0,0 +1,7 @@ +ChangeStreamDocumentCollectionUUID | mongodb

    Interface ChangeStreamDocumentCollectionUUID

    interface ChangeStreamDocumentCollectionUUID {
        collectionUUID: Binary;
    }

    Hierarchy (view full)

    Properties

    Properties

    collectionUUID: Binary

    The UUID (Binary subtype 4) of the collection that the operation was performed on.

    +

    Only present when the showExpandedEvents flag is enabled.

    +

    NOTE: collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers +flag is enabled.

    +

    6.1.0

    +
    diff --git a/docs/6.16/interfaces/ChangeStreamDocumentCommon.html b/docs/6.16/interfaces/ChangeStreamDocumentCommon.html new file mode 100644 index 00000000000..256dbaa6a98 --- /dev/null +++ b/docs/6.16/interfaces/ChangeStreamDocumentCommon.html @@ -0,0 +1,22 @@ +ChangeStreamDocumentCommon | mongodb

    Interface ChangeStreamDocumentCommon

    interface ChangeStreamDocumentCommon {
        _id: unknown;
        clusterTime?: Timestamp;
        lsid?: ServerSessionId;
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted +change stream.

    +
    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. +For events that happened as part of a multi-document transaction, the associated change stream +notifications will have the same clusterTime value, namely the time when the transaction was committed. +On a sharded cluster, events that occur on different shards can have the same clusterTime but be +associated with different transactions or even not be associated with any transaction. +To identify events for a single transaction, you can use the combination of lsid and txnNumber in the change stream event document.

    +

    The identifier for the session associated with the transaction. +Only present if the operation is part of a multi-document transaction.

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +stage, events larger than 16MB will be split into multiple events and contain the +following information about which fragment the current event is.

    +
    txnNumber?: number

    The transaction number. +Only present if the operation is part of a multi-document transaction.

    +

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    +
    diff --git a/docs/6.16/interfaces/ChangeStreamDocumentKey.html b/docs/6.16/interfaces/ChangeStreamDocumentKey.html new file mode 100644 index 00000000000..7d4fd71cc58 --- /dev/null +++ b/docs/6.16/interfaces/ChangeStreamDocumentKey.html @@ -0,0 +1,4 @@ +ChangeStreamDocumentKey | mongodb

    Interface ChangeStreamDocumentKey<TSchema>

    interface ChangeStreamDocumentKey<TSchema> {
        documentKey: {
            _id: InferIdType<TSchema>;
            [shardKey: string]: any;
        };
    }

    Type Parameters

    Hierarchy (view full)

    Properties

    Properties

    documentKey: {
        _id: InferIdType<TSchema>;
        [shardKey: string]: any;
    }

    For unsharded collections this contains a single field _id. +For sharded collections, this will contain all the components of the shard key

    +
    diff --git a/docs/6.16/interfaces/ChangeStreamDocumentOperationDescription.html b/docs/6.16/interfaces/ChangeStreamDocumentOperationDescription.html new file mode 100644 index 00000000000..4588fa913cb --- /dev/null +++ b/docs/6.16/interfaces/ChangeStreamDocumentOperationDescription.html @@ -0,0 +1,5 @@ +ChangeStreamDocumentOperationDescription | mongodb

    Interface ChangeStreamDocumentOperationDescription

    interface ChangeStreamDocumentOperationDescription {
        operationDescription?: Document;
    }

    Hierarchy (view full)

    Properties

    operationDescription?: Document

    An description of the operation.

    +

    Only present when the showExpandedEvents flag is enabled.

    +

    6.1.0

    +
    diff --git a/docs/6.16/interfaces/ChangeStreamDropDatabaseDocument.html b/docs/6.16/interfaces/ChangeStreamDropDatabaseDocument.html new file mode 100644 index 00000000000..344641ed02d --- /dev/null +++ b/docs/6.16/interfaces/ChangeStreamDropDatabaseDocument.html @@ -0,0 +1,27 @@ +ChangeStreamDropDatabaseDocument | mongodb

    Interface ChangeStreamDropDatabaseDocument

    interface ChangeStreamDropDatabaseDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        lsid?: ServerSessionId;
        ns: {
            db: string;
        };
        operationType: "dropDatabase";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted +change stream.

    +
    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. +For events that happened as part of a multi-document transaction, the associated change stream +notifications will have the same clusterTime value, namely the time when the transaction was committed. +On a sharded cluster, events that occur on different shards can have the same clusterTime but be +associated with different transactions or even not be associated with any transaction. +To identify events for a single transaction, you can use the combination of lsid and txnNumber in the change stream event document.

    +

    The identifier for the session associated with the transaction. +Only present if the operation is part of a multi-document transaction.

    +
    ns: {
        db: string;
    }

    The database dropped

    +
    operationType: "dropDatabase"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +stage, events larger than 16MB will be split into multiple events and contain the +following information about which fragment the current event is.

    +
    txnNumber?: number

    The transaction number. +Only present if the operation is part of a multi-document transaction.

    +

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    +
    diff --git a/docs/6.16/interfaces/ChangeStreamDropDocument.html b/docs/6.16/interfaces/ChangeStreamDropDocument.html new file mode 100644 index 00000000000..60337686d6a --- /dev/null +++ b/docs/6.16/interfaces/ChangeStreamDropDocument.html @@ -0,0 +1,33 @@ +ChangeStreamDropDocument | mongodb

    Interface ChangeStreamDropDocument

    interface ChangeStreamDropDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        ns: ChangeStreamNameSpace;
        operationType: "drop";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted +change stream.

    +
    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. +For events that happened as part of a multi-document transaction, the associated change stream +notifications will have the same clusterTime value, namely the time when the transaction was committed. +On a sharded cluster, events that occur on different shards can have the same clusterTime but be +associated with different transactions or even not be associated with any transaction. +To identify events for a single transaction, you can use the combination of lsid and txnNumber in the change stream event document.

    +
    collectionUUID: Binary

    The UUID (Binary subtype 4) of the collection that the operation was performed on.

    +

    Only present when the showExpandedEvents flag is enabled.

    +

    NOTE: collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers +flag is enabled.

    +

    6.1.0

    +

    The identifier for the session associated with the transaction. +Only present if the operation is part of a multi-document transaction.

    +

    Namespace the drop event occurred on

    +
    operationType: "drop"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +stage, events larger than 16MB will be split into multiple events and contain the +following information about which fragment the current event is.

    +
    txnNumber?: number

    The transaction number. +Only present if the operation is part of a multi-document transaction.

    +

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    +
    diff --git a/docs/6.16/interfaces/ChangeStreamDropIndexDocument.html b/docs/6.16/interfaces/ChangeStreamDropIndexDocument.html new file mode 100644 index 00000000000..281251d9bee --- /dev/null +++ b/docs/6.16/interfaces/ChangeStreamDropIndexDocument.html @@ -0,0 +1,36 @@ +ChangeStreamDropIndexDocument | mongodb

    Interface ChangeStreamDropIndexDocument

    Only present when the showExpandedEvents flag is enabled.

    +
    interface ChangeStreamDropIndexDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        operationDescription?: Document;
        operationType: "dropIndexes";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted +change stream.

    +
    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. +For events that happened as part of a multi-document transaction, the associated change stream +notifications will have the same clusterTime value, namely the time when the transaction was committed. +On a sharded cluster, events that occur on different shards can have the same clusterTime but be +associated with different transactions or even not be associated with any transaction. +To identify events for a single transaction, you can use the combination of lsid and txnNumber in the change stream event document.

    +
    collectionUUID: Binary

    The UUID (Binary subtype 4) of the collection that the operation was performed on.

    +

    Only present when the showExpandedEvents flag is enabled.

    +

    NOTE: collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers +flag is enabled.

    +

    6.1.0

    +

    The identifier for the session associated with the transaction. +Only present if the operation is part of a multi-document transaction.

    +
    operationDescription?: Document

    An description of the operation.

    +

    Only present when the showExpandedEvents flag is enabled.

    +

    6.1.0

    +
    operationType: "dropIndexes"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +stage, events larger than 16MB will be split into multiple events and contain the +following information about which fragment the current event is.

    +
    txnNumber?: number

    The transaction number. +Only present if the operation is part of a multi-document transaction.

    +

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    +
    diff --git a/docs/6.16/interfaces/ChangeStreamInsertDocument.html b/docs/6.16/interfaces/ChangeStreamInsertDocument.html new file mode 100644 index 00000000000..fc01399b5f5 --- /dev/null +++ b/docs/6.16/interfaces/ChangeStreamInsertDocument.html @@ -0,0 +1,38 @@ +ChangeStreamInsertDocument | mongodb

    Interface ChangeStreamInsertDocument<TSchema>

    interface ChangeStreamInsertDocument<TSchema> {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        documentKey: {
            _id: InferIdType<TSchema>;
            [shardKey: string]: any;
        };
        fullDocument: TSchema;
        lsid?: ServerSessionId;
        ns: ChangeStreamNameSpace;
        operationType: "insert";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Type Parameters

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted +change stream.

    +
    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. +For events that happened as part of a multi-document transaction, the associated change stream +notifications will have the same clusterTime value, namely the time when the transaction was committed. +On a sharded cluster, events that occur on different shards can have the same clusterTime but be +associated with different transactions or even not be associated with any transaction. +To identify events for a single transaction, you can use the combination of lsid and txnNumber in the change stream event document.

    +
    collectionUUID: Binary

    The UUID (Binary subtype 4) of the collection that the operation was performed on.

    +

    Only present when the showExpandedEvents flag is enabled.

    +

    NOTE: collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers +flag is enabled.

    +

    6.1.0

    +
    documentKey: {
        _id: InferIdType<TSchema>;
        [shardKey: string]: any;
    }

    For unsharded collections this contains a single field _id. +For sharded collections, this will contain all the components of the shard key

    +
    fullDocument: TSchema

    This key will contain the document being inserted

    +

    The identifier for the session associated with the transaction. +Only present if the operation is part of a multi-document transaction.

    +

    Namespace the insert event occurred on

    +
    operationType: "insert"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +stage, events larger than 16MB will be split into multiple events and contain the +following information about which fragment the current event is.

    +
    txnNumber?: number

    The transaction number. +Only present if the operation is part of a multi-document transaction.

    +

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    +
    diff --git a/docs/6.16/interfaces/ChangeStreamInvalidateDocument.html b/docs/6.16/interfaces/ChangeStreamInvalidateDocument.html new file mode 100644 index 00000000000..cfcc31d9244 --- /dev/null +++ b/docs/6.16/interfaces/ChangeStreamInvalidateDocument.html @@ -0,0 +1,25 @@ +ChangeStreamInvalidateDocument | mongodb

    Interface ChangeStreamInvalidateDocument

    interface ChangeStreamInvalidateDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        lsid?: ServerSessionId;
        operationType: "invalidate";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted +change stream.

    +
    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. +For events that happened as part of a multi-document transaction, the associated change stream +notifications will have the same clusterTime value, namely the time when the transaction was committed. +On a sharded cluster, events that occur on different shards can have the same clusterTime but be +associated with different transactions or even not be associated with any transaction. +To identify events for a single transaction, you can use the combination of lsid and txnNumber in the change stream event document.

    +

    The identifier for the session associated with the transaction. +Only present if the operation is part of a multi-document transaction.

    +
    operationType: "invalidate"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +stage, events larger than 16MB will be split into multiple events and contain the +following information about which fragment the current event is.

    +
    txnNumber?: number

    The transaction number. +Only present if the operation is part of a multi-document transaction.

    +

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    +
    diff --git a/docs/6.16/interfaces/ChangeStreamNameSpace.html b/docs/6.16/interfaces/ChangeStreamNameSpace.html new file mode 100644 index 00000000000..90fe5395fe6 --- /dev/null +++ b/docs/6.16/interfaces/ChangeStreamNameSpace.html @@ -0,0 +1,3 @@ +ChangeStreamNameSpace | mongodb

    Interface ChangeStreamNameSpace

    interface ChangeStreamNameSpace {
        coll: string;
        db: string;
    }

    Properties

    coll +db +

    Properties

    coll: string
    db: string
    diff --git a/docs/6.16/interfaces/ChangeStreamOptions.html b/docs/6.16/interfaces/ChangeStreamOptions.html new file mode 100644 index 00000000000..99acd0358ae --- /dev/null +++ b/docs/6.16/interfaces/ChangeStreamOptions.html @@ -0,0 +1,126 @@ +ChangeStreamOptions | mongodb

    Interface ChangeStreamOptions

    Options that can be passed to a ChangeStream. Note that startAfter, resumeAfter, and startAtOperationTime are all mutually exclusive, and the server will error if more than one is specified.

    +
    interface ChangeStreamOptions {
        allowDiskUse?: boolean;
        authdb?: string;
        batchSize?: number;
        bsonRegExp?: boolean;
        bypassDocumentValidation?: boolean;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        cursor?: Document;
        dbName?: string;
        enableUtf8Validation?: boolean;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        fullDocument?: string;
        fullDocumentBeforeChange?: string;
        hint?: Hint;
        ignoreUndefined?: boolean;
        let?: Document;
        maxAwaitTimeMS?: number;
        maxTimeMS?: number;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        out?: string;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        resumeAfter?: unknown;
        retryWrites?: boolean;
        serializeFunctions?: boolean;
        session?: ClientSession;
        showExpandedEvents?: boolean;
        startAfter?: unknown;
        startAtOperationTime?: Timestamp;
        timeoutMS?: number;
        useBigInt64?: boolean;
        willRetryWrite?: boolean;
    }

    Hierarchy

    Properties

    allowDiskUse?: boolean

    allowDiskUse lets the server know if it can use disk to store temporary results for the aggregation (requires mongodb 2.6 >).

    +
    authdb?: string
    batchSize?: number

    The number of documents to return per batch.

    +
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    bypassDocumentValidation?: boolean

    Allow driver to bypass schema validation.

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    collation?: CollationOptions

    Specify collation.

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    cursor?: Document

    Return the query as cursor, on 2.6 > it returns as a real cursor on pre 2.6 it returns as an emulated cursor.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +

    Specifies the verbosity mode for the explain output.

    +

    This API is deprecated in favor of collection.aggregate().explain() +or db.aggregate().explain().

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    fullDocument?: string

    Allowed values: 'updateLookup', 'whenAvailable', 'required'.

    +

    When set to 'updateLookup', the change notification for partial updates +will include both a delta describing the changes to the document as well +as a copy of the entire document that was changed from some time after +the change occurred.

    +

    When set to 'whenAvailable', configures the change stream to return the +post-image of the modified document for replace and update change events +if the post-image for this event is available.

    +

    When set to 'required', the same behavior as 'whenAvailable' except that +an error is raised if the post-image is not available.

    +
    fullDocumentBeforeChange?: string

    Allowed values: 'whenAvailable', 'required', 'off'.

    +

    The default is to not send a value, which is equivalent to 'off'.

    +

    When set to 'whenAvailable', configures the change stream to return the +pre-image of the modified document for replace, update, and delete change +events if it is available.

    +

    When set to 'required', the same behavior as 'whenAvailable' except that +an error is raised if the pre-image is not available.

    +
    hint?: Hint

    Add an index selection hint to an aggregation command

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    let?: Document

    Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0).

    +
    maxAwaitTimeMS?: number

    The maximum amount of time for the server to wait on new documents to satisfy a change stream query.

    +
    maxTimeMS?: number

    Specifies a cumulative time limit in milliseconds for processing operations on the cursor. MongoDB interrupts the operation at the earliest following interrupt point.

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    out?: string
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest).

    +
    resumeAfter?: unknown

    Allows you to start a changeStream after a specified event.

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    showExpandedEvents?: boolean

    When enabled, configures the change stream to include extra change events.

    +
      +
    • createIndexes
    • +
    • dropIndexes
    • +
    • modify
    • +
    • create
    • +
    • shardCollection
    • +
    • reshardCollection
    • +
    • refineCollectionShardKey
    • +
    +
    startAfter?: unknown

    Similar to resumeAfter, but will allow you to start after an invalidated event.

    +
    startAtOperationTime?: Timestamp

    Will start the changeStream after the specified operationTime.

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    willRetryWrite?: boolean
    diff --git a/docs/6.16/interfaces/ChangeStreamRefineCollectionShardKeyDocument.html b/docs/6.16/interfaces/ChangeStreamRefineCollectionShardKeyDocument.html new file mode 100644 index 00000000000..43416119fe5 --- /dev/null +++ b/docs/6.16/interfaces/ChangeStreamRefineCollectionShardKeyDocument.html @@ -0,0 +1,35 @@ +ChangeStreamRefineCollectionShardKeyDocument | mongodb

    Interface ChangeStreamRefineCollectionShardKeyDocument

    interface ChangeStreamRefineCollectionShardKeyDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        operationDescription?: Document;
        operationType: "refineCollectionShardKey";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted +change stream.

    +
    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. +For events that happened as part of a multi-document transaction, the associated change stream +notifications will have the same clusterTime value, namely the time when the transaction was committed. +On a sharded cluster, events that occur on different shards can have the same clusterTime but be +associated with different transactions or even not be associated with any transaction. +To identify events for a single transaction, you can use the combination of lsid and txnNumber in the change stream event document.

    +
    collectionUUID: Binary

    The UUID (Binary subtype 4) of the collection that the operation was performed on.

    +

    Only present when the showExpandedEvents flag is enabled.

    +

    NOTE: collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers +flag is enabled.

    +

    6.1.0

    +

    The identifier for the session associated with the transaction. +Only present if the operation is part of a multi-document transaction.

    +
    operationDescription?: Document

    An description of the operation.

    +

    Only present when the showExpandedEvents flag is enabled.

    +

    6.1.0

    +
    operationType: "refineCollectionShardKey"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +stage, events larger than 16MB will be split into multiple events and contain the +following information about which fragment the current event is.

    +
    txnNumber?: number

    The transaction number. +Only present if the operation is part of a multi-document transaction.

    +

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    +
    diff --git a/docs/6.16/interfaces/ChangeStreamRenameDocument.html b/docs/6.16/interfaces/ChangeStreamRenameDocument.html new file mode 100644 index 00000000000..fce2f77b66a --- /dev/null +++ b/docs/6.16/interfaces/ChangeStreamRenameDocument.html @@ -0,0 +1,35 @@ +ChangeStreamRenameDocument | mongodb

    Interface ChangeStreamRenameDocument

    interface ChangeStreamRenameDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        ns: ChangeStreamNameSpace;
        operationType: "rename";
        splitEvent?: ChangeStreamSplitEvent;
        to: {
            coll: string;
            db: string;
        };
        txnNumber?: number;
    }

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted +change stream.

    +
    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. +For events that happened as part of a multi-document transaction, the associated change stream +notifications will have the same clusterTime value, namely the time when the transaction was committed. +On a sharded cluster, events that occur on different shards can have the same clusterTime but be +associated with different transactions or even not be associated with any transaction. +To identify events for a single transaction, you can use the combination of lsid and txnNumber in the change stream event document.

    +
    collectionUUID: Binary

    The UUID (Binary subtype 4) of the collection that the operation was performed on.

    +

    Only present when the showExpandedEvents flag is enabled.

    +

    NOTE: collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers +flag is enabled.

    +

    6.1.0

    +

    The identifier for the session associated with the transaction. +Only present if the operation is part of a multi-document transaction.

    +

    The "from" namespace that the rename occurred on

    +
    operationType: "rename"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +stage, events larger than 16MB will be split into multiple events and contain the +following information about which fragment the current event is.

    +
    to: {
        coll: string;
        db: string;
    }

    The new name for the ns.coll collection

    +
    txnNumber?: number

    The transaction number. +Only present if the operation is part of a multi-document transaction.

    +

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    +
    diff --git a/docs/6.16/interfaces/ChangeStreamReplaceDocument.html b/docs/6.16/interfaces/ChangeStreamReplaceDocument.html new file mode 100644 index 00000000000..74451a0296a --- /dev/null +++ b/docs/6.16/interfaces/ChangeStreamReplaceDocument.html @@ -0,0 +1,38 @@ +ChangeStreamReplaceDocument | mongodb

    Interface ChangeStreamReplaceDocument<TSchema>

    interface ChangeStreamReplaceDocument<TSchema> {
        _id: unknown;
        clusterTime?: Timestamp;
        documentKey: {
            _id: InferIdType<TSchema>;
            [shardKey: string]: any;
        };
        fullDocument: TSchema;
        fullDocumentBeforeChange?: TSchema;
        lsid?: ServerSessionId;
        ns: ChangeStreamNameSpace;
        operationType: "replace";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Type Parameters

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted +change stream.

    +
    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. +For events that happened as part of a multi-document transaction, the associated change stream +notifications will have the same clusterTime value, namely the time when the transaction was committed. +On a sharded cluster, events that occur on different shards can have the same clusterTime but be +associated with different transactions or even not be associated with any transaction. +To identify events for a single transaction, you can use the combination of lsid and txnNumber in the change stream event document.

    +
    documentKey: {
        _id: InferIdType<TSchema>;
        [shardKey: string]: any;
    }

    For unsharded collections this contains a single field _id. +For sharded collections, this will contain all the components of the shard key

    +
    fullDocument: TSchema

    The fullDocument of a replace event represents the document after the insert of the replacement document

    +
    fullDocumentBeforeChange?: TSchema

    Contains the pre-image of the modified or deleted document if the +pre-image is available for the change event and either 'required' or +'whenAvailable' was specified for the 'fullDocumentBeforeChange' option +when creating the change stream. If 'whenAvailable' was specified but the +pre-image is unavailable, this will be explicitly set to null.

    +

    The identifier for the session associated with the transaction. +Only present if the operation is part of a multi-document transaction.

    +

    Namespace the replace event occurred on

    +
    operationType: "replace"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +stage, events larger than 16MB will be split into multiple events and contain the +following information about which fragment the current event is.

    +
    txnNumber?: number

    The transaction number. +Only present if the operation is part of a multi-document transaction.

    +

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    +
    diff --git a/docs/6.16/interfaces/ChangeStreamReshardCollectionDocument.html b/docs/6.16/interfaces/ChangeStreamReshardCollectionDocument.html new file mode 100644 index 00000000000..ee5dd33de29 --- /dev/null +++ b/docs/6.16/interfaces/ChangeStreamReshardCollectionDocument.html @@ -0,0 +1,35 @@ +ChangeStreamReshardCollectionDocument | mongodb

    Interface ChangeStreamReshardCollectionDocument

    interface ChangeStreamReshardCollectionDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        operationDescription?: Document;
        operationType: "reshardCollection";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted +change stream.

    +
    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. +For events that happened as part of a multi-document transaction, the associated change stream +notifications will have the same clusterTime value, namely the time when the transaction was committed. +On a sharded cluster, events that occur on different shards can have the same clusterTime but be +associated with different transactions or even not be associated with any transaction. +To identify events for a single transaction, you can use the combination of lsid and txnNumber in the change stream event document.

    +
    collectionUUID: Binary

    The UUID (Binary subtype 4) of the collection that the operation was performed on.

    +

    Only present when the showExpandedEvents flag is enabled.

    +

    NOTE: collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers +flag is enabled.

    +

    6.1.0

    +

    The identifier for the session associated with the transaction. +Only present if the operation is part of a multi-document transaction.

    +
    operationDescription?: Document

    An description of the operation.

    +

    Only present when the showExpandedEvents flag is enabled.

    +

    6.1.0

    +
    operationType: "reshardCollection"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +stage, events larger than 16MB will be split into multiple events and contain the +following information about which fragment the current event is.

    +
    txnNumber?: number

    The transaction number. +Only present if the operation is part of a multi-document transaction.

    +

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    +
    diff --git a/docs/6.16/interfaces/ChangeStreamShardCollectionDocument.html b/docs/6.16/interfaces/ChangeStreamShardCollectionDocument.html new file mode 100644 index 00000000000..6d92e0a315f --- /dev/null +++ b/docs/6.16/interfaces/ChangeStreamShardCollectionDocument.html @@ -0,0 +1,35 @@ +ChangeStreamShardCollectionDocument | mongodb

    Interface ChangeStreamShardCollectionDocument

    interface ChangeStreamShardCollectionDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        operationDescription?: Document;
        operationType: "shardCollection";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted +change stream.

    +
    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. +For events that happened as part of a multi-document transaction, the associated change stream +notifications will have the same clusterTime value, namely the time when the transaction was committed. +On a sharded cluster, events that occur on different shards can have the same clusterTime but be +associated with different transactions or even not be associated with any transaction. +To identify events for a single transaction, you can use the combination of lsid and txnNumber in the change stream event document.

    +
    collectionUUID: Binary

    The UUID (Binary subtype 4) of the collection that the operation was performed on.

    +

    Only present when the showExpandedEvents flag is enabled.

    +

    NOTE: collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers +flag is enabled.

    +

    6.1.0

    +

    The identifier for the session associated with the transaction. +Only present if the operation is part of a multi-document transaction.

    +
    operationDescription?: Document

    An description of the operation.

    +

    Only present when the showExpandedEvents flag is enabled.

    +

    6.1.0

    +
    operationType: "shardCollection"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +stage, events larger than 16MB will be split into multiple events and contain the +following information about which fragment the current event is.

    +
    txnNumber?: number

    The transaction number. +Only present if the operation is part of a multi-document transaction.

    +

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    +
    diff --git a/docs/6.16/interfaces/ChangeStreamSplitEvent.html b/docs/6.16/interfaces/ChangeStreamSplitEvent.html new file mode 100644 index 00000000000..f10fe2be173 --- /dev/null +++ b/docs/6.16/interfaces/ChangeStreamSplitEvent.html @@ -0,0 +1,5 @@ +ChangeStreamSplitEvent | mongodb

    Interface ChangeStreamSplitEvent

    interface ChangeStreamSplitEvent {
        fragment: number;
        of: number;
    }

    Properties

    Properties

    fragment: number

    Which fragment of the change this is.

    +
    of: number

    The total number of fragments.

    +
    diff --git a/docs/6.16/interfaces/ChangeStreamUpdateDocument.html b/docs/6.16/interfaces/ChangeStreamUpdateDocument.html new file mode 100644 index 00000000000..fb9aeefe2f1 --- /dev/null +++ b/docs/6.16/interfaces/ChangeStreamUpdateDocument.html @@ -0,0 +1,49 @@ +ChangeStreamUpdateDocument | mongodb

    Interface ChangeStreamUpdateDocument<TSchema>

    interface ChangeStreamUpdateDocument<TSchema> {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        documentKey: {
            _id: InferIdType<TSchema>;
            [shardKey: string]: any;
        };
        fullDocument?: TSchema;
        fullDocumentBeforeChange?: TSchema;
        lsid?: ServerSessionId;
        ns: ChangeStreamNameSpace;
        operationType: "update";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
        updateDescription: UpdateDescription<TSchema>;
    }

    Type Parameters

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted +change stream.

    +
    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. +For events that happened as part of a multi-document transaction, the associated change stream +notifications will have the same clusterTime value, namely the time when the transaction was committed. +On a sharded cluster, events that occur on different shards can have the same clusterTime but be +associated with different transactions or even not be associated with any transaction. +To identify events for a single transaction, you can use the combination of lsid and txnNumber in the change stream event document.

    +
    collectionUUID: Binary

    The UUID (Binary subtype 4) of the collection that the operation was performed on.

    +

    Only present when the showExpandedEvents flag is enabled.

    +

    NOTE: collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers +flag is enabled.

    +

    6.1.0

    +
    documentKey: {
        _id: InferIdType<TSchema>;
        [shardKey: string]: any;
    }

    For unsharded collections this contains a single field _id. +For sharded collections, this will contain all the components of the shard key

    +
    fullDocument?: TSchema

    This is only set if fullDocument is set to 'updateLookup' +Contains the point-in-time post-image of the modified document if the +post-image is available and either 'required' or 'whenAvailable' was +specified for the 'fullDocument' option when creating the change stream.

    +
    fullDocumentBeforeChange?: TSchema

    Contains the pre-image of the modified or deleted document if the +pre-image is available for the change event and either 'required' or +'whenAvailable' was specified for the 'fullDocumentBeforeChange' option +when creating the change stream. If 'whenAvailable' was specified but the +pre-image is unavailable, this will be explicitly set to null.

    +

    The identifier for the session associated with the transaction. +Only present if the operation is part of a multi-document transaction.

    +

    Namespace the update event occurred on

    +
    operationType: "update"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +stage, events larger than 16MB will be split into multiple events and contain the +following information about which fragment the current event is.

    +
    txnNumber?: number

    The transaction number. +Only present if the operation is part of a multi-document transaction.

    +

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    +
    updateDescription: UpdateDescription<TSchema>

    Contains a description of updated and removed fields in this operation

    +
    diff --git a/docs/6.16/interfaces/ClientBulkWriteError.html b/docs/6.16/interfaces/ClientBulkWriteError.html new file mode 100644 index 00000000000..5b57513c544 --- /dev/null +++ b/docs/6.16/interfaces/ClientBulkWriteError.html @@ -0,0 +1,3 @@ +ClientBulkWriteError | mongodb

    Interface ClientBulkWriteError

    interface ClientBulkWriteError {
        code: number;
        message: string;
    }

    Properties

    Properties

    code: number
    message: string
    diff --git a/docs/6.16/interfaces/ClientBulkWriteOptions.html b/docs/6.16/interfaces/ClientBulkWriteOptions.html new file mode 100644 index 00000000000..a5dadf10b0c --- /dev/null +++ b/docs/6.16/interfaces/ClientBulkWriteOptions.html @@ -0,0 +1,83 @@ +ClientBulkWriteOptions | mongodb

    Interface ClientBulkWriteOptions

    interface ClientBulkWriteOptions {
        authdb?: string;
        bsonRegExp?: boolean;
        bypassDocumentValidation?: boolean;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        dbName?: string;
        enableUtf8Validation?: boolean;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        ignoreUndefined?: boolean;
        let?: Document;
        maxTimeMS?: number;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        ordered?: boolean;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        serializeFunctions?: boolean;
        session?: ClientSession;
        timeoutMS?: number;
        useBigInt64?: boolean;
        verboseResults?: boolean;
        willRetryWrite?: boolean;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    authdb?: string
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    bypassDocumentValidation?: boolean

    Allow driver to bypass schema validation.

    +

    false - documents will be validated by default

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    collation?: CollationOptions

    Collation

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +

    Specifies the verbosity mode for the explain output.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    let?: Document

    Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0).

    +
    maxTimeMS?: number

    maxTimeMS is a server-side time limit in milliseconds for processing an operation.

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    ordered?: boolean

    If true, when an insert fails, don't execute the remaining writes. +If false, continue with remaining inserts when one fails.

    +

    true - inserts are ordered by default

    +
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest).

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    verboseResults?: boolean

    Whether detailed results for each successful operation should be included in the returned +BulkWriteResult.

    +
    willRetryWrite?: boolean

    Write Concern as an object

    +
    diff --git a/docs/6.16/interfaces/ClientBulkWriteResult.html b/docs/6.16/interfaces/ClientBulkWriteResult.html new file mode 100644 index 00000000000..32727e4fe59 --- /dev/null +++ b/docs/6.16/interfaces/ClientBulkWriteResult.html @@ -0,0 +1,19 @@ +ClientBulkWriteResult | mongodb

    Interface ClientBulkWriteResult

    interface ClientBulkWriteResult {
        acknowledged: boolean;
        deletedCount: number;
        deleteResults?: ReadonlyMap<number, ClientDeleteResult>;
        insertedCount: number;
        insertResults?: ReadonlyMap<number, ClientInsertOneResult>;
        matchedCount: number;
        modifiedCount: number;
        updateResults?: ReadonlyMap<number, ClientUpdateResult>;
        upsertedCount: number;
    }

    Properties

    acknowledged: boolean

    Whether the bulk write was acknowledged.

    +
    deletedCount: number

    The total number of documents deleted across all delete operations.

    +
    deleteResults?: ReadonlyMap<number, ClientDeleteResult>

    The results of each individual delete operation that was successfully performed.

    +
    insertedCount: number

    The total number of documents inserted across all insert operations.

    +
    insertResults?: ReadonlyMap<number, ClientInsertOneResult>

    The results of each individual insert operation that was successfully performed.

    +
    matchedCount: number

    The total number of documents matched across all update operations.

    +
    modifiedCount: number

    The total number of documents modified across all update operations.

    +
    updateResults?: ReadonlyMap<number, ClientUpdateResult>

    The results of each individual update operation that was successfully performed.

    +
    upsertedCount: number

    The total number of documents upserted across all update operations.

    +
    diff --git a/docs/6.16/interfaces/ClientDeleteManyModel.html b/docs/6.16/interfaces/ClientDeleteManyModel.html new file mode 100644 index 00000000000..d796bf6e818 --- /dev/null +++ b/docs/6.16/interfaces/ClientDeleteManyModel.html @@ -0,0 +1,14 @@ +ClientDeleteManyModel | mongodb

    Interface ClientDeleteManyModel<TSchema>

    interface ClientDeleteManyModel<TSchema> {
        collation?: CollationOptions;
        filter: Filter<TSchema>;
        hint?: Hint;
        name: "deleteMany";
        namespace: string;
    }

    Type Parameters

    • TSchema

    Hierarchy (view full)

    Properties

    collation?: CollationOptions

    Specifies a collation.

    +
    filter: Filter<TSchema>

    The filter used to determine if a document should be deleted. +For a deleteMany operation, all matches are removed.

    +
    hint?: Hint

    The index to use. If specified, then the query system will only consider plans using the hinted index.

    +
    name: "deleteMany"
    namespace: string

    The namespace for the write.

    +

    A namespace is a combination of the database name and the name of the collection: <database-name>.<collection>. +All documents belong to a namespace.

    +
    diff --git a/docs/6.16/interfaces/ClientDeleteOneModel.html b/docs/6.16/interfaces/ClientDeleteOneModel.html new file mode 100644 index 00000000000..9bd1a754aa0 --- /dev/null +++ b/docs/6.16/interfaces/ClientDeleteOneModel.html @@ -0,0 +1,14 @@ +ClientDeleteOneModel | mongodb

    Interface ClientDeleteOneModel<TSchema>

    interface ClientDeleteOneModel<TSchema> {
        collation?: CollationOptions;
        filter: Filter<TSchema>;
        hint?: Hint;
        name: "deleteOne";
        namespace: string;
    }

    Type Parameters

    • TSchema

    Hierarchy (view full)

    Properties

    collation?: CollationOptions

    Specifies a collation.

    +
    filter: Filter<TSchema>

    The filter used to determine if a document should be deleted. +For a deleteOne operation, the first match is removed.

    +
    hint?: Hint

    The index to use. If specified, then the query system will only consider plans using the hinted index.

    +
    name: "deleteOne"
    namespace: string

    The namespace for the write.

    +

    A namespace is a combination of the database name and the name of the collection: <database-name>.<collection>. +All documents belong to a namespace.

    +
    diff --git a/docs/6.16/interfaces/ClientDeleteResult.html b/docs/6.16/interfaces/ClientDeleteResult.html new file mode 100644 index 00000000000..7213ee81c7c --- /dev/null +++ b/docs/6.16/interfaces/ClientDeleteResult.html @@ -0,0 +1,3 @@ +ClientDeleteResult | mongodb

    Interface ClientDeleteResult

    interface ClientDeleteResult {
        deletedCount: number;
    }

    Properties

    Properties

    deletedCount: number

    The number of documents that were deleted.

    +
    diff --git a/docs/6.16/interfaces/ClientEncryptionCreateDataKeyProviderOptions.html b/docs/6.16/interfaces/ClientEncryptionCreateDataKeyProviderOptions.html new file mode 100644 index 00000000000..dead9e69cf0 --- /dev/null +++ b/docs/6.16/interfaces/ClientEncryptionCreateDataKeyProviderOptions.html @@ -0,0 +1,8 @@ +ClientEncryptionCreateDataKeyProviderOptions | mongodb

    Interface ClientEncryptionCreateDataKeyProviderOptions

    Options to provide when creating a new data key.

    +
    interface ClientEncryptionCreateDataKeyProviderOptions {
        keyAltNames?: string[];
        keyMaterial?: Buffer | Binary;
        masterKey?:
            | AWSEncryptionKeyOptions
            | AzureEncryptionKeyOptions
            | GCPEncryptionKeyOptions
            | KMIPEncryptionKeyOptions;
    }

    Properties

    keyAltNames?: string[]

    An optional list of string alternate names used to reference a key. +If a key is created with alternate names, then encryption may refer to the key by the unique alternate name instead of by _id.

    +
    keyMaterial?: Buffer | Binary

    Identifies a new KMS-specific key used to encrypt the new data key

    +
    diff --git a/docs/6.16/interfaces/ClientEncryptionEncryptOptions.html b/docs/6.16/interfaces/ClientEncryptionEncryptOptions.html new file mode 100644 index 00000000000..2aaec87937e --- /dev/null +++ b/docs/6.16/interfaces/ClientEncryptionEncryptOptions.html @@ -0,0 +1,14 @@ +ClientEncryptionEncryptOptions | mongodb

    Interface ClientEncryptionEncryptOptions

    Options to provide when encrypting data.

    +
    interface ClientEncryptionEncryptOptions {
        algorithm:
            | "AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic"
            | "AEAD_AES_256_CBC_HMAC_SHA_512-Random"
            | "Indexed"
            | "Unindexed"
            | "Range";
        contentionFactor?: number | bigint;
        keyAltName?: string;
        keyId?: Binary;
        queryType?: "equality" | "range";
        rangeOptions?: RangeOptions;
    }

    Properties

    algorithm:
        | "AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic"
        | "AEAD_AES_256_CBC_HMAC_SHA_512-Random"
        | "Indexed"
        | "Unindexed"
        | "Range"

    The algorithm to use for encryption.

    +
    contentionFactor?: number | bigint

    The contention factor.

    +
    keyAltName?: string

    A unique string name corresponding to an already existing dataKey.

    +
    keyId?: Binary

    The id of the Binary dataKey to use for encryption

    +
    queryType?: "equality" | "range"

    The query type.

    +
    rangeOptions?: RangeOptions

    The index options for a Queryable Encryption field supporting "range" queries.

    +
    diff --git a/docs/6.16/interfaces/ClientEncryptionOptions.html b/docs/6.16/interfaces/ClientEncryptionOptions.html new file mode 100644 index 00000000000..7b6be79ed92 --- /dev/null +++ b/docs/6.16/interfaces/ClientEncryptionOptions.html @@ -0,0 +1,26 @@ +ClientEncryptionOptions | mongodb

    Interface ClientEncryptionOptions

    Additional settings to provide when creating a new ClientEncryption instance.

    +
    interface ClientEncryptionOptions {
        credentialProviders?: CredentialProviders;
        keyVaultClient?: MongoClient;
        keyVaultNamespace: string;
        kmsProviders?: KMSProviders;
        proxyOptions?: ProxyOptions;
        timeoutMS?: number;
        tlsOptions?: CSFLEKMSTlsOptions;
    }

    Properties

    credentialProviders?: CredentialProviders

    Options for user provided custom credential providers.

    +
    keyVaultClient?: MongoClient

    A MongoClient used to fetch keys from a key vault. Defaults to client.

    +
    keyVaultNamespace: string

    The namespace of the key vault, used to store encryption keys

    +
    kmsProviders?: KMSProviders

    Options for specific KMS providers to use

    +
    proxyOptions?: ProxyOptions

    Options for specifying a Socks5 proxy to use for connecting to the KMS.

    +
    timeoutMS?: number

    The timeout setting to be used for all the operations on ClientEncryption.

    +

    When provided, timeoutMS is used as the timeout for each operation executed on +the ClientEncryption object. For example:

    +
    const clientEncryption = new ClientEncryption(client, {
    timeoutMS: 1_000
    kmsProviders: { local: { key: '<KEY>' } }
    });

    // `1_000` is used as the timeout for createDataKey call
    await clientEncryption.createDataKey('local'); +
    + +

    If timeoutMS is configured on the provided client, the client's timeoutMS value +will be used unless timeoutMS is also provided as a client encryption option.

    +
    const client = new MongoClient('<uri>', { timeoutMS: 2_000 });

    // timeoutMS is set to 1_000 on clientEncryption
    const clientEncryption = new ClientEncryption(client, {
    timeoutMS: 1_000
    kmsProviders: { local: { key: '<KEY>' } }
    }); +
    + +
    tlsOptions?: CSFLEKMSTlsOptions

    TLS options for kms providers to use.

    +
    diff --git a/docs/6.16/interfaces/ClientEncryptionRewrapManyDataKeyProviderOptions.html b/docs/6.16/interfaces/ClientEncryptionRewrapManyDataKeyProviderOptions.html new file mode 100644 index 00000000000..3c7dcaf480e --- /dev/null +++ b/docs/6.16/interfaces/ClientEncryptionRewrapManyDataKeyProviderOptions.html @@ -0,0 +1,3 @@ +ClientEncryptionRewrapManyDataKeyProviderOptions | mongodb

    Interface ClientEncryptionRewrapManyDataKeyProviderOptionsExperimental

    interface ClientEncryptionRewrapManyDataKeyProviderOptions {
        masterKey?:
            | AWSEncryptionKeyOptions
            | AzureEncryptionKeyOptions
            | GCPEncryptionKeyOptions
            | KMIPEncryptionKeyOptions;
        provider: keyof KMSProviders;
    }

    Properties

    Properties

    provider: keyof KMSProviders
    diff --git a/docs/6.16/interfaces/ClientEncryptionRewrapManyDataKeyResult.html b/docs/6.16/interfaces/ClientEncryptionRewrapManyDataKeyResult.html new file mode 100644 index 00000000000..577bb6500fd --- /dev/null +++ b/docs/6.16/interfaces/ClientEncryptionRewrapManyDataKeyResult.html @@ -0,0 +1,3 @@ +ClientEncryptionRewrapManyDataKeyResult | mongodb

    Interface ClientEncryptionRewrapManyDataKeyResultExperimental

    interface ClientEncryptionRewrapManyDataKeyResult {
        bulkWriteResult?: BulkWriteResult;
    }

    Properties

    Properties

    bulkWriteResult?: BulkWriteResult

    The result of rewrapping data keys. If unset, no keys matched the filter.

    +
    diff --git a/docs/6.16/interfaces/ClientInsertOneModel.html b/docs/6.16/interfaces/ClientInsertOneModel.html new file mode 100644 index 00000000000..8fa49332149 --- /dev/null +++ b/docs/6.16/interfaces/ClientInsertOneModel.html @@ -0,0 +1,9 @@ +ClientInsertOneModel | mongodb

    Interface ClientInsertOneModel<TSchema>

    interface ClientInsertOneModel<TSchema> {
        document: OptionalId<TSchema>;
        name: "insertOne";
        namespace: string;
    }

    Type Parameters

    • TSchema

    Hierarchy (view full)

    Properties

    Properties

    document: OptionalId<TSchema>

    The document to insert.

    +
    name: "insertOne"
    namespace: string

    The namespace for the write.

    +

    A namespace is a combination of the database name and the name of the collection: <database-name>.<collection>. +All documents belong to a namespace.

    +
    diff --git a/docs/6.16/interfaces/ClientInsertOneResult.html b/docs/6.16/interfaces/ClientInsertOneResult.html new file mode 100644 index 00000000000..c11b69bdeef --- /dev/null +++ b/docs/6.16/interfaces/ClientInsertOneResult.html @@ -0,0 +1,3 @@ +ClientInsertOneResult | mongodb

    Interface ClientInsertOneResult

    interface ClientInsertOneResult {
        insertedId: any;
    }

    Properties

    Properties

    insertedId: any

    The _id of the inserted document.

    +
    diff --git a/docs/6.16/interfaces/ClientMetadata.html b/docs/6.16/interfaces/ClientMetadata.html new file mode 100644 index 00000000000..4ee8329f952 --- /dev/null +++ b/docs/6.16/interfaces/ClientMetadata.html @@ -0,0 +1,8 @@ +ClientMetadata | mongodb

    Interface ClientMetadata

    interface ClientMetadata {
        application?: {
            name: string;
        };
        driver: {
            name: string;
            version: string;
        };
        env?: {
            memory_mb?: Int32;
            name:
                | "aws.lambda"
                | "gcp.func"
                | "azure.func"
                | "vercel";
            region?: string;
            timeout_sec?: Int32;
            url?: string;
        };
        os: {
            architecture?: string;
            name?: Platform;
            type: string;
            version?: string;
        };
        platform: string;
    }

    Properties

    application?: {
        name: string;
    }
    driver: {
        name: string;
        version: string;
    }
    env?: {
        memory_mb?: Int32;
        name:
            | "aws.lambda"
            | "gcp.func"
            | "azure.func"
            | "vercel";
        region?: string;
        timeout_sec?: Int32;
        url?: string;
    }

    FaaS environment information

    +
    os: {
        architecture?: string;
        name?: Platform;
        type: string;
        version?: string;
    }
    platform: string
    diff --git a/docs/6.16/interfaces/ClientMetadataOptions.html b/docs/6.16/interfaces/ClientMetadataOptions.html new file mode 100644 index 00000000000..0aa943c7beb --- /dev/null +++ b/docs/6.16/interfaces/ClientMetadataOptions.html @@ -0,0 +1,3 @@ +ClientMetadataOptions | mongodb

    Interface ClientMetadataOptions

    interface ClientMetadataOptions {
        appName?: string;
        driverInfo?: {
            name?: string;
            platform?: string;
            version?: string;
        };
    }

    Properties

    Properties

    appName?: string
    driverInfo?: {
        name?: string;
        platform?: string;
        version?: string;
    }
    diff --git a/docs/6.16/interfaces/ClientReplaceOneModel.html b/docs/6.16/interfaces/ClientReplaceOneModel.html new file mode 100644 index 00000000000..cc2b357e20a --- /dev/null +++ b/docs/6.16/interfaces/ClientReplaceOneModel.html @@ -0,0 +1,20 @@ +ClientReplaceOneModel | mongodb

    Interface ClientReplaceOneModel<TSchema>

    interface ClientReplaceOneModel<TSchema> {
        collation?: CollationOptions;
        filter: Filter<TSchema>;
        hint?: Hint;
        name: "replaceOne";
        namespace: string;
        replacement: WithoutId<TSchema>;
        sort?: Sort;
        upsert?: boolean;
    }

    Type Parameters

    • TSchema

    Hierarchy (view full)

    Properties

    collation?: CollationOptions

    Specifies a collation.

    +
    filter: Filter<TSchema>

    The filter used to determine if a document should be replaced. +For a replaceOne operation, the first match is replaced.

    +
    hint?: Hint

    The index to use. If specified, then the query system will only consider plans using the hinted index.

    +
    name: "replaceOne"
    namespace: string

    The namespace for the write.

    +

    A namespace is a combination of the database name and the name of the collection: <database-name>.<collection>. +All documents belong to a namespace.

    +
    replacement: WithoutId<TSchema>

    The document with which to replace the matched document.

    +
    sort?: Sort

    Specifies the sort order for the documents matched by the filter.

    +
    upsert?: boolean

    When true, creates a new document if no document matches the query.

    +
    diff --git a/docs/6.16/interfaces/ClientSessionOptions.html b/docs/6.16/interfaces/ClientSessionOptions.html new file mode 100644 index 00000000000..adc24731dde --- /dev/null +++ b/docs/6.16/interfaces/ClientSessionOptions.html @@ -0,0 +1,10 @@ +ClientSessionOptions | mongodb

    Interface ClientSessionOptions

    interface ClientSessionOptions {
        causalConsistency?: boolean;
        defaultTimeoutMS?: number;
        defaultTransactionOptions?: TransactionOptions;
        snapshot?: boolean;
    }

    Properties

    causalConsistency?: boolean

    Whether causal consistency should be enabled on this session

    +
    defaultTimeoutMS?: number

    An overriding timeoutMS value to use for a client-side timeout. +If not provided the session uses the timeoutMS specified on the MongoClient.

    +
    defaultTransactionOptions?: TransactionOptions

    The default TransactionOptions to use for transactions started on this session.

    +
    snapshot?: boolean

    Whether all read operations should be read from the same snapshot for this session (NOTE: not compatible with causalConsistency=true)

    +
    diff --git a/docs/6.16/interfaces/ClientUpdateManyModel.html b/docs/6.16/interfaces/ClientUpdateManyModel.html new file mode 100644 index 00000000000..a0c2f6de0c2 --- /dev/null +++ b/docs/6.16/interfaces/ClientUpdateManyModel.html @@ -0,0 +1,22 @@ +ClientUpdateManyModel | mongodb

    Interface ClientUpdateManyModel<TSchema>

    interface ClientUpdateManyModel<TSchema> {
        arrayFilters?: Document[];
        collation?: CollationOptions;
        filter: Filter<TSchema>;
        hint?: Hint;
        name: "updateMany";
        namespace: string;
        update: Document[] | UpdateFilter<TSchema>;
        upsert?: boolean;
    }

    Type Parameters

    • TSchema

    Hierarchy (view full)

    Properties

    arrayFilters?: Document[]

    A set of filters specifying to which array elements an update should apply.

    +
    collation?: CollationOptions

    Specifies a collation.

    +
    filter: Filter<TSchema>

    The filter used to determine if a document should be updated. +For an updateMany operation, all matches are updated.

    +
    hint?: Hint

    The index to use. If specified, then the query system will only consider plans using the hinted index.

    +
    name: "updateMany"
    namespace: string

    The namespace for the write.

    +

    A namespace is a combination of the database name and the name of the collection: <database-name>.<collection>. +All documents belong to a namespace.

    +

    The modifications to apply. The value can be either: +UpdateFilter - A document that contains update operator expressions, +Document[] - an aggregation pipeline.

    +
    upsert?: boolean

    When true, creates a new document if no document matches the query.

    +
    diff --git a/docs/6.16/interfaces/ClientUpdateOneModel.html b/docs/6.16/interfaces/ClientUpdateOneModel.html new file mode 100644 index 00000000000..8ce72638cd0 --- /dev/null +++ b/docs/6.16/interfaces/ClientUpdateOneModel.html @@ -0,0 +1,24 @@ +ClientUpdateOneModel | mongodb

    Interface ClientUpdateOneModel<TSchema>

    interface ClientUpdateOneModel<TSchema> {
        arrayFilters?: Document[];
        collation?: CollationOptions;
        filter: Filter<TSchema>;
        hint?: Hint;
        name: "updateOne";
        namespace: string;
        sort?: Sort;
        update: Document[] | UpdateFilter<TSchema>;
        upsert?: boolean;
    }

    Type Parameters

    • TSchema

    Hierarchy (view full)

    Properties

    arrayFilters?: Document[]

    A set of filters specifying to which array elements an update should apply.

    +
    collation?: CollationOptions

    Specifies a collation.

    +
    filter: Filter<TSchema>

    The filter used to determine if a document should be updated. +For an updateOne operation, the first match is updated.

    +
    hint?: Hint

    The index to use. If specified, then the query system will only consider plans using the hinted index.

    +
    name: "updateOne"
    namespace: string

    The namespace for the write.

    +

    A namespace is a combination of the database name and the name of the collection: <database-name>.<collection>. +All documents belong to a namespace.

    +
    sort?: Sort

    Specifies the sort order for the documents matched by the filter.

    +

    The modifications to apply. The value can be either: +UpdateFilter - A document that contains update operator expressions, +Document[] - an aggregation pipeline.

    +
    upsert?: boolean

    When true, creates a new document if no document matches the query.

    +
    diff --git a/docs/6.16/interfaces/ClientUpdateResult.html b/docs/6.16/interfaces/ClientUpdateResult.html new file mode 100644 index 00000000000..5010d52e1d5 --- /dev/null +++ b/docs/6.16/interfaces/ClientUpdateResult.html @@ -0,0 +1,12 @@ +ClientUpdateResult | mongodb

    Interface ClientUpdateResult

    interface ClientUpdateResult {
        didUpsert: boolean;
        matchedCount: number;
        modifiedCount: number;
        upsertedId?: any;
    }

    Properties

    didUpsert: boolean

    Determines if the upsert did include an _id, which includes the case of the _id being null.

    +
    matchedCount: number

    The number of documents that matched the filter.

    +
    modifiedCount: number

    The number of documents that were modified.

    +
    upsertedId?: any

    The _id field of the upserted document if an upsert occurred.

    +

    It MUST be possible to discern between a BSON Null upserted ID value and this field being +unset. If necessary, drivers MAY add a didUpsert boolean field to differentiate between +these two cases.

    +
    diff --git a/docs/6.16/interfaces/ClientWriteModel.html b/docs/6.16/interfaces/ClientWriteModel.html new file mode 100644 index 00000000000..88b3889c308 --- /dev/null +++ b/docs/6.16/interfaces/ClientWriteModel.html @@ -0,0 +1,6 @@ +ClientWriteModel | mongodb

    Interface ClientWriteModel

    interface ClientWriteModel {
        namespace: string;
    }

    Hierarchy (view full)

    Properties

    Properties

    namespace: string

    The namespace for the write.

    +

    A namespace is a combination of the database name and the name of the collection: <database-name>.<collection>. +All documents belong to a namespace.

    +
    diff --git a/docs/6.16/interfaces/CloseOptions.html b/docs/6.16/interfaces/CloseOptions.html new file mode 100644 index 00000000000..ea83c997f6b --- /dev/null +++ b/docs/6.16/interfaces/CloseOptions.html @@ -0,0 +1,4 @@ +CloseOptions | mongodb

    Interface CloseOptions

    This interface is deprecated and will be removed in a future release as it is not used +in the driver

    +
    interface CloseOptions {
        force?: boolean;
    }

    Properties

    Properties

    force?: boolean
    diff --git a/docs/6.16/interfaces/ClusterTime.html b/docs/6.16/interfaces/ClusterTime.html new file mode 100644 index 00000000000..cc5ffcbe30e --- /dev/null +++ b/docs/6.16/interfaces/ClusterTime.html @@ -0,0 +1,7 @@ +ClusterTime | mongodb

    Interface ClusterTime

    Gossiped in component for the cluster time tracking the state of user databases +across the cluster. It may optionally include a signature identifying the process that +generated such a value.

    +
    interface ClusterTime {
        clusterTime: Timestamp;
        signature?: {
            hash: Binary;
            keyId: Long;
        };
    }

    Properties

    Properties

    clusterTime: Timestamp
    signature?: {
        hash: Binary;
        keyId: Long;
    }

    Used to validate the identity of a request or response's ClusterTime.

    +
    diff --git a/docs/6.16/interfaces/ClusteredCollectionOptions.html b/docs/6.16/interfaces/ClusteredCollectionOptions.html new file mode 100644 index 00000000000..998cd001285 --- /dev/null +++ b/docs/6.16/interfaces/ClusteredCollectionOptions.html @@ -0,0 +1,6 @@ +ClusteredCollectionOptions | mongodb

    Interface ClusteredCollectionOptions

    Configuration options for clustered collections

    +
    interface ClusteredCollectionOptions {
        key: Document;
        name?: string;
        unique: boolean;
    }

    Hierarchy (view full)

    Properties

    Properties

    name?: string
    unique: boolean
    diff --git a/docs/6.16/interfaces/CollationOptions.html b/docs/6.16/interfaces/CollationOptions.html new file mode 100644 index 00000000000..95a7e5d485a --- /dev/null +++ b/docs/6.16/interfaces/CollationOptions.html @@ -0,0 +1,10 @@ +CollationOptions | mongodb

    Interface CollationOptions

    interface CollationOptions {
        alternate?: string;
        backwards?: boolean;
        caseFirst?: string;
        caseLevel?: boolean;
        locale: string;
        maxVariable?: string;
        normalization?: boolean;
        numericOrdering?: boolean;
        strength?: number;
    }

    Properties

    alternate?: string
    backwards?: boolean
    caseFirst?: string
    caseLevel?: boolean
    locale: string
    maxVariable?: string
    normalization?: boolean
    numericOrdering?: boolean
    strength?: number
    diff --git a/docs/6.16/interfaces/CollectionInfo.html b/docs/6.16/interfaces/CollectionInfo.html new file mode 100644 index 00000000000..645d5e72e5a --- /dev/null +++ b/docs/6.16/interfaces/CollectionInfo.html @@ -0,0 +1,6 @@ +CollectionInfo | mongodb

    Interface CollectionInfo

    interface CollectionInfo {
        idIndex?: Document;
        info?: {
            readOnly?: false;
            uuid?: Binary;
        };
        name: string;
        options?: Document;
        type?: string;
    }

    Hierarchy (view full)

    Properties

    Properties

    idIndex?: Document
    info?: {
        readOnly?: false;
        uuid?: Binary;
    }
    name: string
    options?: Document
    type?: string
    diff --git a/docs/6.16/interfaces/CollectionOptions.html b/docs/6.16/interfaces/CollectionOptions.html new file mode 100644 index 00000000000..37c9cc34d78 --- /dev/null +++ b/docs/6.16/interfaces/CollectionOptions.html @@ -0,0 +1,51 @@ +CollectionOptions | mongodb

    Interface CollectionOptions

    interface CollectionOptions {
        bsonRegExp?: boolean;
        checkKeys?: boolean;
        enableUtf8Validation?: boolean;
        fieldsAsRaw?: Document;
        ignoreUndefined?: boolean;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        serializeFunctions?: boolean;
        timeoutMS?: number;
        useBigInt64?: boolean;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +

    Write Concern as an object

    +
    diff --git a/docs/6.16/interfaces/CommandOperationOptions.html b/docs/6.16/interfaces/CommandOperationOptions.html new file mode 100644 index 00000000000..6332f9285ed --- /dev/null +++ b/docs/6.16/interfaces/CommandOperationOptions.html @@ -0,0 +1,71 @@ +CommandOperationOptions | mongodb

    Interface CommandOperationOptions

    interface CommandOperationOptions {
        authdb?: string;
        bsonRegExp?: boolean;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        dbName?: string;
        enableUtf8Validation?: boolean;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        ignoreUndefined?: boolean;
        maxTimeMS?: number;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        serializeFunctions?: boolean;
        session?: ClientSession;
        timeoutMS?: number;
        useBigInt64?: boolean;
        willRetryWrite?: boolean;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    authdb?: string
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    collation?: CollationOptions

    Collation

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +

    Specifies the verbosity mode for the explain output.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    maxTimeMS?: number

    maxTimeMS is a server-side time limit in milliseconds for processing an operation.

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest).

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    willRetryWrite?: boolean

    Write Concern as an object

    +
    diff --git a/docs/6.16/interfaces/ConnectOptions.html b/docs/6.16/interfaces/ConnectOptions.html new file mode 100644 index 00000000000..35486d2daa1 --- /dev/null +++ b/docs/6.16/interfaces/ConnectOptions.html @@ -0,0 +1,2 @@ +ConnectOptions | mongodb

    Interface ConnectOptions

    interface ConnectOptions {
        readPreference?: ReadPreference;
    }

    Properties

    Properties

    readPreference?: ReadPreference
    diff --git a/docs/6.16/interfaces/ConnectionOptions.html b/docs/6.16/interfaces/ConnectionOptions.html new file mode 100644 index 00000000000..9be9be6b589 --- /dev/null +++ b/docs/6.16/interfaces/ConnectionOptions.html @@ -0,0 +1,127 @@ +ConnectionOptions | mongodb

    Interface ConnectionOptions

    interface ConnectionOptions {
        allowPartialTrustChain?: boolean;
        ALPNProtocols?: Uint8Array | string[] | Uint8Array[];
        autoSelectFamily?: boolean;
        autoSelectFamilyAttemptTimeout?: number;
        ca?: string | Buffer | (string | Buffer)[];
        cancellationToken?: CancellationToken;
        cert?: string | Buffer | (string | Buffer)[];
        checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined);
        ciphers?: string;
        compressors?: (
            | "none"
            | "snappy"
            | "zlib"
            | "zstd")[];
        connectTimeoutMS?: number;
        credentials?: MongoCredentials;
        crl?: string | Buffer | (string | Buffer)[];
        ecdhCurve?: string;
        family?: number;
        generation: number;
        hints?: number;
        hostAddress: HostAddress;
        id: number | "<monitor>";
        keepAliveInitialDelay?: number;
        key?: string | Buffer | (string | Buffer | KeyObject)[];
        loadBalanced: boolean;
        localAddress?: string;
        localPort?: number;
        logicalSessionTimeoutMinutes?: number;
        lookup?: LookupFunction;
        metadata: ClientMetadata;
        minDHSize?: number;
        monitorCommands: boolean;
        noDelay?: boolean;
        passphrase?: string;
        pfx?: string | Buffer | (string | Buffer | PxfObject)[];
        proxyHost?: string;
        proxyPassword?: string;
        proxyPort?: number;
        proxyUsername?: string;
        rejectUnauthorized?: boolean;
        secureContext?: SecureContext;
        secureProtocol?: string;
        serverApi?: ServerApi;
        servername?: string;
        session?: Buffer;
        socketTimeoutMS?: number;
        tls: boolean;
    }

    Hierarchy (view full)

    Properties

    allowPartialTrustChain?: boolean

    Treat intermediate (non-self-signed) +certificates in the trust CA certificate list as trusted.

    +

    v22.9.0, v20.18.0

    +
    ALPNProtocols?: Uint8Array | string[] | Uint8Array[]

    An array of strings or a Buffer naming possible ALPN protocols. +(Protocols should be ordered by their priority.)

    +
    autoSelectFamily?: boolean

    v18.13.0

    +
    autoSelectFamilyAttemptTimeout?: number

    v18.13.0

    +
    ca?: string | Buffer | (string | Buffer)[]

    Optionally override the trusted CA certificates. Default is to trust +the well-known CAs curated by Mozilla. Mozilla's CAs are completely +replaced when CAs are explicitly specified using this option.

    +
    cancellationToken?: CancellationToken
    cert?: string | Buffer | (string | Buffer)[]

    Cert chains in PEM format. One cert chain should be provided per +private key. Each cert chain should consist of the PEM formatted +certificate for a provided private key, followed by the PEM +formatted intermediate certificates (if any), in order, and not +including the root CA (the root CA must be pre-known to the peer, +see ca). When providing multiple cert chains, they do not have to +be in the same order as their private keys in key. If the +intermediate certificates are not provided, the peer will not be +able to validate the certificate, and the handshake will fail.

    +
    checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined)

    Type declaration

      • (hostname, cert): Error | undefined
      • Verifies the certificate cert is issued to hostname.

        +

        Returns Error object, populating it with reason, host, and cert on +failure. On success, returns undefined.

        +

        This function is intended to be used in combination with thecheckServerIdentity option that can be passed to connect and as +such operates on a certificate object. For other purposes, consider using x509.checkHost() instead.

        +

        This function can be overwritten by providing an alternative function as the options.checkServerIdentity option that is passed to tls.connect(). The +overwriting function can call tls.checkServerIdentity() of course, to augment +the checks done with additional verification.

        +

        This function is only called if the certificate passed all other checks, such as +being issued by trusted CA (options.ca).

        +

        Earlier versions of Node.js incorrectly accepted certificates for a givenhostname if a matching uniformResourceIdentifier subject alternative name +was present (see CVE-2021-44531). Applications that wish to acceptuniformResourceIdentifier subject alternative names can use +a custom options.checkServerIdentity function that implements the desired behavior.

        +

        Parameters

        • hostname: string

          The host name or IP address to verify the certificate against.

          +
        • cert: PeerCertificate

          A certificate object representing the peer's certificate.

          +

        Returns Error | undefined

        v0.8.4

        +
    ciphers?: string

    Cipher suite specification, replacing the default. For more +information, see modifying the default cipher suite. Permitted +ciphers can be obtained via tls.getCiphers(). Cipher names must be +uppercased in order for OpenSSL to accept them.

    +
    compressors?: (
        | "none"
        | "snappy"
        | "zlib"
        | "zstd")[]
    connectTimeoutMS?: number
    credentials?: MongoCredentials
    crl?: string | Buffer | (string | Buffer)[]

    PEM formatted CRLs (Certificate Revocation Lists).

    +
    ecdhCurve?: string

    A string describing a named curve or a colon separated list of curve +NIDs or names, for example P-521:P-384:P-256, to use for ECDH key +agreement. Set to auto to select the curve automatically. Use +crypto.getCurves() to obtain a list of available curve names. On +recent releases, openssl ecparam -list_curves will also display the +name and description of each available elliptic curve. Default: +tls.DEFAULT_ECDH_CURVE.

    +
    family?: number
    generation: number
    hints?: number
    hostAddress: HostAddress
    id: number | "<monitor>"
    keepAliveInitialDelay?: number

    Node.JS socket option to set the time the first keepalive probe is sent on an idle socket. Defaults to 120000ms

    +
    key?: string | Buffer | (string | Buffer | KeyObject)[]

    Private keys in PEM format. PEM allows the option of private keys +being encrypted. Encrypted keys will be decrypted with +options.passphrase. Multiple keys using different algorithms can be +provided either as an array of unencrypted key strings or buffers, +or an array of objects in the form {pem: <string|buffer>[, +passphrase: ]}. The object form can only occur in an array. +object.passphrase is optional. Encrypted keys will be decrypted with +object.passphrase if provided, or options.passphrase if it is not.

    +
    loadBalanced: boolean
    localAddress?: string
    localPort?: number
    logicalSessionTimeoutMinutes?: number
    lookup?: LookupFunction
    metadata: ClientMetadata
    minDHSize?: number
    monitorCommands: boolean
    noDelay?: boolean
    passphrase?: string

    Shared passphrase used for a single private key and/or a PFX.

    +
    pfx?: string | Buffer | (string | Buffer | PxfObject)[]

    PFX or PKCS12 encoded private key and certificate chain. pfx is an +alternative to providing key and cert individually. PFX is usually +encrypted, if it is, passphrase will be used to decrypt it. Multiple +PFX can be provided either as an array of unencrypted PFX buffers, +or an array of objects in the form {buf: <string|buffer>[, +passphrase: ]}. The object form can only occur in an array. +object.passphrase is optional. Encrypted PFX will be decrypted with +object.passphrase if provided, or options.passphrase if it is not.

    +
    proxyHost?: string
    proxyPassword?: string
    proxyPort?: number
    proxyUsername?: string
    rejectUnauthorized?: boolean

    If true the server will reject any connection which is not +authorized with the list of supplied CAs. This option only has an +effect if requestCert is true.

    +
    true
    +
    + +
    secureContext?: SecureContext

    An optional TLS context object from tls.createSecureContext()

    +
    secureProtocol?: string

    Legacy mechanism to select the TLS protocol version to use, it does +not support independent control of the minimum and maximum version, +and does not support limiting the protocol to TLSv1.3. Use +minVersion and maxVersion instead. The possible values are listed as +SSL_METHODS, use the function names as strings. For example, use +'TLSv1_1_method' to force TLS version 1.1, or 'TLS_method' to allow +any TLS protocol version up to TLSv1.3. It is not recommended to use +TLS versions less than 1.2, but it may be required for +interoperability. Default: none, see minVersion.

    +
    serverApi?: ServerApi
    servername?: string
    session?: Buffer

    An optional Buffer instance containing a TLS session.

    +
    socketTimeoutMS?: number
    tls: boolean
    diff --git a/docs/6.16/interfaces/ConnectionPoolOptions.html b/docs/6.16/interfaces/ConnectionPoolOptions.html new file mode 100644 index 00000000000..0e8862e890e --- /dev/null +++ b/docs/6.16/interfaces/ConnectionPoolOptions.html @@ -0,0 +1,136 @@ +ConnectionPoolOptions | mongodb

    Interface ConnectionPoolOptions

    interface ConnectionPoolOptions {
        allowPartialTrustChain?: boolean;
        ALPNProtocols?: Uint8Array | string[] | Uint8Array[];
        autoSelectFamily?: boolean;
        autoSelectFamilyAttemptTimeout?: number;
        ca?: string | Buffer | (string | Buffer)[];
        cancellationToken?: CancellationToken;
        cert?: string | Buffer | (string | Buffer)[];
        checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined);
        ciphers?: string;
        compressors?: (
            | "none"
            | "snappy"
            | "zlib"
            | "zstd")[];
        connectTimeoutMS?: number;
        credentials?: MongoCredentials;
        crl?: string | Buffer | (string | Buffer)[];
        ecdhCurve?: string;
        family?: number;
        hints?: number;
        hostAddress: HostAddress;
        keepAliveInitialDelay?: number;
        key?: string | Buffer | (string | Buffer | KeyObject)[];
        loadBalanced: boolean;
        localAddress?: string;
        localPort?: number;
        logicalSessionTimeoutMinutes?: number;
        lookup?: LookupFunction;
        maxConnecting: number;
        maxIdleTimeMS: number;
        maxPoolSize: number;
        metadata: ClientMetadata;
        minDHSize?: number;
        minPoolSize: number;
        monitorCommands: boolean;
        noDelay?: boolean;
        passphrase?: string;
        pfx?: string | Buffer | (string | Buffer | PxfObject)[];
        proxyHost?: string;
        proxyPassword?: string;
        proxyPort?: number;
        proxyUsername?: string;
        rejectUnauthorized?: boolean;
        secureContext?: SecureContext;
        secureProtocol?: string;
        serverApi?: ServerApi;
        servername?: string;
        session?: Buffer;
        socketTimeoutMS?: number;
        tls: boolean;
        waitQueueTimeoutMS: number;
    }

    Hierarchy

    Properties

    allowPartialTrustChain?: boolean

    Treat intermediate (non-self-signed) +certificates in the trust CA certificate list as trusted.

    +

    v22.9.0, v20.18.0

    +
    ALPNProtocols?: Uint8Array | string[] | Uint8Array[]

    An array of strings or a Buffer naming possible ALPN protocols. +(Protocols should be ordered by their priority.)

    +
    autoSelectFamily?: boolean

    v18.13.0

    +
    autoSelectFamilyAttemptTimeout?: number

    v18.13.0

    +
    ca?: string | Buffer | (string | Buffer)[]

    Optionally override the trusted CA certificates. Default is to trust +the well-known CAs curated by Mozilla. Mozilla's CAs are completely +replaced when CAs are explicitly specified using this option.

    +
    cancellationToken?: CancellationToken
    cert?: string | Buffer | (string | Buffer)[]

    Cert chains in PEM format. One cert chain should be provided per +private key. Each cert chain should consist of the PEM formatted +certificate for a provided private key, followed by the PEM +formatted intermediate certificates (if any), in order, and not +including the root CA (the root CA must be pre-known to the peer, +see ca). When providing multiple cert chains, they do not have to +be in the same order as their private keys in key. If the +intermediate certificates are not provided, the peer will not be +able to validate the certificate, and the handshake will fail.

    +
    checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined)

    Type declaration

      • (hostname, cert): Error | undefined
      • Verifies the certificate cert is issued to hostname.

        +

        Returns Error object, populating it with reason, host, and cert on +failure. On success, returns undefined.

        +

        This function is intended to be used in combination with thecheckServerIdentity option that can be passed to connect and as +such operates on a certificate object. For other purposes, consider using x509.checkHost() instead.

        +

        This function can be overwritten by providing an alternative function as the options.checkServerIdentity option that is passed to tls.connect(). The +overwriting function can call tls.checkServerIdentity() of course, to augment +the checks done with additional verification.

        +

        This function is only called if the certificate passed all other checks, such as +being issued by trusted CA (options.ca).

        +

        Earlier versions of Node.js incorrectly accepted certificates for a givenhostname if a matching uniformResourceIdentifier subject alternative name +was present (see CVE-2021-44531). Applications that wish to acceptuniformResourceIdentifier subject alternative names can use +a custom options.checkServerIdentity function that implements the desired behavior.

        +

        Parameters

        • hostname: string

          The host name or IP address to verify the certificate against.

          +
        • cert: PeerCertificate

          A certificate object representing the peer's certificate.

          +

        Returns Error | undefined

        v0.8.4

        +
    ciphers?: string

    Cipher suite specification, replacing the default. For more +information, see modifying the default cipher suite. Permitted +ciphers can be obtained via tls.getCiphers(). Cipher names must be +uppercased in order for OpenSSL to accept them.

    +
    compressors?: (
        | "none"
        | "snappy"
        | "zlib"
        | "zstd")[]
    connectTimeoutMS?: number
    credentials?: MongoCredentials
    crl?: string | Buffer | (string | Buffer)[]

    PEM formatted CRLs (Certificate Revocation Lists).

    +
    ecdhCurve?: string

    A string describing a named curve or a colon separated list of curve +NIDs or names, for example P-521:P-384:P-256, to use for ECDH key +agreement. Set to auto to select the curve automatically. Use +crypto.getCurves() to obtain a list of available curve names. On +recent releases, openssl ecparam -list_curves will also display the +name and description of each available elliptic curve. Default: +tls.DEFAULT_ECDH_CURVE.

    +
    family?: number
    hints?: number
    hostAddress: HostAddress
    keepAliveInitialDelay?: number

    Node.JS socket option to set the time the first keepalive probe is sent on an idle socket. Defaults to 120000ms

    +
    key?: string | Buffer | (string | Buffer | KeyObject)[]

    Private keys in PEM format. PEM allows the option of private keys +being encrypted. Encrypted keys will be decrypted with +options.passphrase. Multiple keys using different algorithms can be +provided either as an array of unencrypted key strings or buffers, +or an array of objects in the form {pem: <string|buffer>[, +passphrase: ]}. The object form can only occur in an array. +object.passphrase is optional. Encrypted keys will be decrypted with +object.passphrase if provided, or options.passphrase if it is not.

    +
    loadBalanced: boolean

    If we are in load balancer mode.

    +
    localAddress?: string
    localPort?: number
    logicalSessionTimeoutMinutes?: number
    lookup?: LookupFunction
    maxConnecting: number

    The maximum number of connections that may be in the process of being established concurrently by the connection pool.

    +
    maxIdleTimeMS: number

    The maximum amount of time a connection should remain idle in the connection pool before being marked idle.

    +
    maxPoolSize: number

    The maximum number of connections that may be associated with a pool at a given time. This includes in use and available connections.

    +
    metadata: ClientMetadata
    minDHSize?: number
    minPoolSize: number

    The minimum number of connections that MUST exist at any moment in a single connection pool.

    +
    monitorCommands: boolean
    noDelay?: boolean
    passphrase?: string

    Shared passphrase used for a single private key and/or a PFX.

    +
    pfx?: string | Buffer | (string | Buffer | PxfObject)[]

    PFX or PKCS12 encoded private key and certificate chain. pfx is an +alternative to providing key and cert individually. PFX is usually +encrypted, if it is, passphrase will be used to decrypt it. Multiple +PFX can be provided either as an array of unencrypted PFX buffers, +or an array of objects in the form {buf: <string|buffer>[, +passphrase: ]}. The object form can only occur in an array. +object.passphrase is optional. Encrypted PFX will be decrypted with +object.passphrase if provided, or options.passphrase if it is not.

    +
    proxyHost?: string
    proxyPassword?: string
    proxyPort?: number
    proxyUsername?: string
    rejectUnauthorized?: boolean

    If true the server will reject any connection which is not +authorized with the list of supplied CAs. This option only has an +effect if requestCert is true.

    +
    true
    +
    + +
    secureContext?: SecureContext

    An optional TLS context object from tls.createSecureContext()

    +
    secureProtocol?: string

    Legacy mechanism to select the TLS protocol version to use, it does +not support independent control of the minimum and maximum version, +and does not support limiting the protocol to TLSv1.3. Use +minVersion and maxVersion instead. The possible values are listed as +SSL_METHODS, use the function names as strings. For example, use +'TLSv1_1_method' to force TLS version 1.1, or 'TLS_method' to allow +any TLS protocol version up to TLSv1.3. It is not recommended to use +TLS versions less than 1.2, but it may be required for +interoperability. Default: none, see minVersion.

    +
    serverApi?: ServerApi
    servername?: string
    session?: Buffer

    An optional Buffer instance containing a TLS session.

    +
    socketTimeoutMS?: number
    tls: boolean
    waitQueueTimeoutMS: number

    The maximum amount of time operation execution should wait for a connection to become available. The default is 0 which means there is no limit.

    +
    diff --git a/docs/6.16/interfaces/CountDocumentsOptions.html b/docs/6.16/interfaces/CountDocumentsOptions.html new file mode 100644 index 00000000000..d6e54f3d448 --- /dev/null +++ b/docs/6.16/interfaces/CountDocumentsOptions.html @@ -0,0 +1,92 @@ +CountDocumentsOptions | mongodb

    Interface CountDocumentsOptions

    interface CountDocumentsOptions {
        allowDiskUse?: boolean;
        authdb?: string;
        batchSize?: number;
        bsonRegExp?: boolean;
        bypassDocumentValidation?: boolean;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        cursor?: Document;
        dbName?: string;
        enableUtf8Validation?: boolean;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        hint?: Hint;
        ignoreUndefined?: boolean;
        let?: Document;
        limit?: number;
        maxAwaitTimeMS?: number;
        maxTimeMS?: number;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        out?: string;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        serializeFunctions?: boolean;
        session?: ClientSession;
        skip?: number;
        timeoutMS?: number;
        useBigInt64?: boolean;
        willRetryWrite?: boolean;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    allowDiskUse?: boolean

    allowDiskUse lets the server know if it can use disk to store temporary results for the aggregation (requires mongodb 2.6 >).

    +
    authdb?: string
    batchSize?: number

    The number of documents to return per batch. See aggregation documentation.

    +
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    bypassDocumentValidation?: boolean

    Allow driver to bypass schema validation.

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    collation?: CollationOptions

    Specify collation.

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    cursor?: Document

    Return the query as cursor, on 2.6 > it returns as a real cursor on pre 2.6 it returns as an emulated cursor.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +

    Specifies the verbosity mode for the explain output.

    +

    This API is deprecated in favor of collection.aggregate().explain() +or db.aggregate().explain().

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    hint?: Hint

    Add an index selection hint to an aggregation command

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    let?: Document

    Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0).

    +
    limit?: number

    The maximum amount of documents to consider.

    +
    maxAwaitTimeMS?: number

    The maximum amount of time for the server to wait on new documents to satisfy a tailable cursor query.

    +
    maxTimeMS?: number

    Specifies a cumulative time limit in milliseconds for processing operations on the cursor. MongoDB interrupts the operation at the earliest following interrupt point.

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    out?: string
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest).

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    skip?: number

    The number of documents to skip.

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    willRetryWrite?: boolean

    Write Concern as an object

    +
    diff --git a/docs/6.16/interfaces/CountOptions.html b/docs/6.16/interfaces/CountOptions.html new file mode 100644 index 00000000000..8f99a4a7d64 --- /dev/null +++ b/docs/6.16/interfaces/CountOptions.html @@ -0,0 +1,77 @@ +CountOptions | mongodb

    Interface CountOptions

    interface CountOptions {
        authdb?: string;
        bsonRegExp?: boolean;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        dbName?: string;
        enableUtf8Validation?: boolean;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        hint?: string | Document;
        ignoreUndefined?: boolean;
        limit?: number;
        maxTimeMS?: number;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        serializeFunctions?: boolean;
        session?: ClientSession;
        skip?: number;
        timeoutMS?: number;
        useBigInt64?: boolean;
        willRetryWrite?: boolean;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    authdb?: string
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    collation?: CollationOptions

    Collation

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +

    Specifies the verbosity mode for the explain output.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    hint?: string | Document

    An index name hint for the query.

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    limit?: number

    The maximum amounts to count before aborting.

    +
    maxTimeMS?: number

    Number of milliseconds to wait before aborting the query.

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest).

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    skip?: number

    The number of documents to skip.

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    willRetryWrite?: boolean

    Write Concern as an object

    +
    diff --git a/docs/6.16/interfaces/CreateCollectionOptions.html b/docs/6.16/interfaces/CreateCollectionOptions.html new file mode 100644 index 00000000000..63cbc5d356e --- /dev/null +++ b/docs/6.16/interfaces/CreateCollectionOptions.html @@ -0,0 +1,107 @@ +CreateCollectionOptions | mongodb

    Interface CreateCollectionOptions

    interface CreateCollectionOptions {
        authdb?: string;
        autoIndexId?: boolean;
        bsonRegExp?: boolean;
        capped?: boolean;
        changeStreamPreAndPostImages?: {
            enabled: boolean;
        };
        checkKeys?: boolean;
        clusteredIndex?: ClusteredCollectionOptions;
        collation?: CollationOptions;
        comment?: unknown;
        dbName?: string;
        enableUtf8Validation?: boolean;
        encryptedFields?: Document;
        expireAfterSeconds?: number;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        flags?: number;
        ignoreUndefined?: boolean;
        indexOptionDefaults?: Document;
        max?: number;
        maxTimeMS?: number;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        pipeline?: Document[];
        pkFactory?: PkFactory;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        serializeFunctions?: boolean;
        session?: ClientSession;
        size?: number;
        storageEngine?: Document;
        timeoutMS?: number;
        timeseries?: TimeSeriesCollectionOptions;
        useBigInt64?: boolean;
        validationAction?: string;
        validationLevel?: string;
        validator?: Document;
        viewOn?: string;
        willRetryWrite?: boolean;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    authdb?: string
    autoIndexId?: boolean

    Create an index on the _id field of the document. This option is deprecated in MongoDB 3.2+ and will be removed once no longer supported by the server.

    +
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    capped?: boolean

    Create a capped collection

    +
    changeStreamPreAndPostImages?: {
        enabled: boolean;
    }

    If set, enables pre-update and post-update document events to be included for any +change streams that listen on this collection.

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +

    A document specifying configuration options for clustered collections. For MongoDB 5.3 and above.

    +
    collation?: CollationOptions

    Collation

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +
    encryptedFields?: Document
    expireAfterSeconds?: number

    The number of seconds after which a document in a timeseries or clustered collection expires.

    +

    Specifies the verbosity mode for the explain output.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    flags?: number

    Available for the MMAPv1 storage engine only to set the usePowerOf2Sizes and the noPadding flag

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    indexOptionDefaults?: Document

    Allows users to specify a default configuration for indexes when creating a collection

    +
    max?: number

    The maximum number of documents in the capped collection

    +
    maxTimeMS?: number

    maxTimeMS is a server-side time limit in milliseconds for processing an operation.

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    pipeline?: Document[]

    An array that consists of the aggregation pipeline stage. Creates the view by applying the specified pipeline to the viewOn collection or view

    +
    pkFactory?: PkFactory

    A primary key factory function for generation of custom _id keys.

    +
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest).

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    size?: number

    The size of the capped collection in bytes

    +
    storageEngine?: Document

    Allows users to specify configuration to the storage engine on a per-collection basis when creating a collection

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +

    A document specifying configuration options for timeseries collections.

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    validationAction?: string

    Determines whether to error on invalid documents or just warn about the violations but allow invalid documents to be inserted

    +
    validationLevel?: string

    Determines how strictly MongoDB applies the validation rules to existing documents during an update

    +
    validator?: Document

    Allows users to specify validation rules or expressions for the collection. For more information, see Document Validation

    +
    viewOn?: string

    The name of the source collection or view from which to create the view. The name is not the full namespace of the collection or view (i.e., does not include the database name and implies the same database as the view to create)

    +
    willRetryWrite?: boolean

    Write Concern as an object

    +
    diff --git a/docs/6.16/interfaces/CreateIndexesOptions.html b/docs/6.16/interfaces/CreateIndexesOptions.html new file mode 100644 index 00000000000..7019a69295a --- /dev/null +++ b/docs/6.16/interfaces/CreateIndexesOptions.html @@ -0,0 +1,101 @@ +CreateIndexesOptions | mongodb

    Interface CreateIndexesOptions

    interface CreateIndexesOptions {
        2dsphereIndexVersion?: number;
        authdb?: string;
        background?: boolean;
        bits?: number;
        bsonRegExp?: boolean;
        bucketSize?: number;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        commitQuorum?: string | number;
        dbName?: string;
        default_language?: string;
        enableUtf8Validation?: boolean;
        expireAfterSeconds?: number;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        hidden?: boolean;
        ignoreUndefined?: boolean;
        language_override?: string;
        max?: number;
        maxTimeMS?: number;
        min?: number;
        name?: string;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        partialFilterExpression?: Document;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        serializeFunctions?: boolean;
        session?: ClientSession;
        sparse?: boolean;
        storageEngine?: Document;
        textIndexVersion?: number;
        timeoutMS?: number;
        unique?: boolean;
        useBigInt64?: boolean;
        version?: number;
        weights?: Document;
        wildcardProjection?: Document;
        willRetryWrite?: boolean;
    }

    Hierarchy

    Properties

    2dsphereIndexVersion?: number
    authdb?: string
    background?: boolean

    Creates the index in the background, yielding whenever possible.

    +
    bits?: number
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    bucketSize?: number
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    collation?: CollationOptions

    Collation

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    commitQuorum?: string | number

    (MongoDB 4.4. or higher) Specifies how many data-bearing members of a replica set, including the primary, must complete the index builds successfully before the primary marks the indexes as ready. This option accepts the same values for the "w" field in a write concern plus "votingMembers", which indicates all voting data-bearing nodes.

    +
    dbName?: string
    default_language?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +
    expireAfterSeconds?: number

    Allows you to expire data on indexes applied to a data (MongoDB 2.2 or higher)

    +

    Specifies the verbosity mode for the explain output.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    hidden?: boolean

    Specifies that the index should exist on the target collection but should not be used by the query planner when executing operations. (MongoDB 4.4 or higher)

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    language_override?: string
    max?: number

    For geospatial indexes set the high bound for the co-ordinates.

    +
    maxTimeMS?: number

    maxTimeMS is a server-side time limit in milliseconds for processing an operation.

    +
    min?: number

    For geospatial indexes set the lower bound for the co-ordinates.

    +
    name?: string

    Override the autogenerated index name (useful if the resulting name is larger than 128 bytes)

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    partialFilterExpression?: Document

    Creates a partial index based on the given filter object (MongoDB 3.2 or higher)

    +
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest).

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    sparse?: boolean

    Creates a sparse index.

    +
    storageEngine?: Document

    Allows users to configure the storage engine on a per-index basis when creating an index. (MongoDB 3.0 or higher)

    +
    textIndexVersion?: number
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    unique?: boolean

    Creates an unique index.

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    version?: number

    Specifies the index version number, either 0 or 1.

    +
    weights?: Document
    wildcardProjection?: Document
    willRetryWrite?: boolean
    diff --git a/docs/6.16/interfaces/CredentialProviders.html b/docs/6.16/interfaces/CredentialProviders.html new file mode 100644 index 00000000000..ad0715677d9 --- /dev/null +++ b/docs/6.16/interfaces/CredentialProviders.html @@ -0,0 +1,3 @@ +CredentialProviders | mongodb

    Interface CredentialProviders

    Configuration options for custom credential providers for KMS requests.

    +
    interface CredentialProviders {
        aws?: AWSCredentialProvider;
    }

    Properties

    Properties

    diff --git a/docs/6.16/interfaces/CursorStreamOptions.html b/docs/6.16/interfaces/CursorStreamOptions.html new file mode 100644 index 00000000000..a6c0051a20b --- /dev/null +++ b/docs/6.16/interfaces/CursorStreamOptions.html @@ -0,0 +1,3 @@ +CursorStreamOptions | mongodb

    Interface CursorStreamOptions

    interface CursorStreamOptions {
        transform?(this: void, doc: Document): Document;
    }

    Methods

    Methods

    diff --git a/docs/6.16/interfaces/DataKey.html b/docs/6.16/interfaces/DataKey.html new file mode 100644 index 00000000000..6be7c2110df --- /dev/null +++ b/docs/6.16/interfaces/DataKey.html @@ -0,0 +1,10 @@ +DataKey | mongodb

    Interface DataKey

    The schema for a DataKey in the key vault collection.

    +
    interface DataKey {
        _id: UUID;
        creationDate: Date;
        keyAltNames?: string[];
        keyMaterial: Binary;
        masterKey: Document;
        status: number;
        updateDate: Date;
        version?: number;
    }

    Properties

    _id: UUID
    creationDate: Date
    keyAltNames?: string[]
    keyMaterial: Binary
    masterKey: Document
    status: number
    updateDate: Date
    version?: number
    diff --git a/docs/6.16/interfaces/DbOptions.html b/docs/6.16/interfaces/DbOptions.html new file mode 100644 index 00000000000..83e1a3821b2 --- /dev/null +++ b/docs/6.16/interfaces/DbOptions.html @@ -0,0 +1,59 @@ +DbOptions | mongodb

    Interface DbOptions

    interface DbOptions {
        authSource?: string;
        bsonRegExp?: boolean;
        checkKeys?: boolean;
        enableUtf8Validation?: boolean;
        fieldsAsRaw?: Document;
        forceServerObjectId?: boolean;
        ignoreUndefined?: boolean;
        pkFactory?: PkFactory;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcern;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        serializeFunctions?: boolean;
        timeoutMS?: number;
        useBigInt64?: boolean;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    authSource?: string

    If the database authentication is dependent on another databaseName.

    +
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    forceServerObjectId?: boolean

    Force server to assign _id values instead of driver.

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    pkFactory?: PkFactory

    A primary key factory object for generation of custom _id keys.

    +
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcern

    Specify a read concern for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST).

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +

    Write Concern as an object

    +
    diff --git a/docs/6.16/interfaces/DbStatsOptions.html b/docs/6.16/interfaces/DbStatsOptions.html new file mode 100644 index 00000000000..5932d14358e --- /dev/null +++ b/docs/6.16/interfaces/DbStatsOptions.html @@ -0,0 +1,73 @@ +DbStatsOptions | mongodb

    Interface DbStatsOptions

    interface DbStatsOptions {
        authdb?: string;
        bsonRegExp?: boolean;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        dbName?: string;
        enableUtf8Validation?: boolean;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        ignoreUndefined?: boolean;
        maxTimeMS?: number;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        scale?: number;
        serializeFunctions?: boolean;
        session?: ClientSession;
        timeoutMS?: number;
        useBigInt64?: boolean;
        willRetryWrite?: boolean;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    authdb?: string
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    collation?: CollationOptions

    Collation

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +

    Specifies the verbosity mode for the explain output.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    maxTimeMS?: number

    maxTimeMS is a server-side time limit in milliseconds for processing an operation.

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest).

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    scale?: number

    Divide the returned sizes by scale value.

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    willRetryWrite?: boolean

    Write Concern as an object

    +
    diff --git a/docs/6.16/interfaces/DeleteManyModel.html b/docs/6.16/interfaces/DeleteManyModel.html new file mode 100644 index 00000000000..e15e9284716 --- /dev/null +++ b/docs/6.16/interfaces/DeleteManyModel.html @@ -0,0 +1,7 @@ +DeleteManyModel | mongodb

    Interface DeleteManyModel<TSchema>

    interface DeleteManyModel<TSchema> {
        collation?: CollationOptions;
        filter: Filter<TSchema>;
        hint?: Hint;
    }

    Type Parameters

    Properties

    Properties

    collation?: CollationOptions

    Specifies a collation.

    +
    filter: Filter<TSchema>

    The filter to limit the deleted documents.

    +
    hint?: Hint

    The index to use. If specified, then the query system will only consider plans using the hinted index.

    +
    diff --git a/docs/6.16/interfaces/DeleteOneModel.html b/docs/6.16/interfaces/DeleteOneModel.html new file mode 100644 index 00000000000..389985addc2 --- /dev/null +++ b/docs/6.16/interfaces/DeleteOneModel.html @@ -0,0 +1,7 @@ +DeleteOneModel | mongodb

    Interface DeleteOneModel<TSchema>

    interface DeleteOneModel<TSchema> {
        collation?: CollationOptions;
        filter: Filter<TSchema>;
        hint?: Hint;
    }

    Type Parameters

    Properties

    Properties

    collation?: CollationOptions

    Specifies a collation.

    +
    filter: Filter<TSchema>

    The filter to limit the deleted documents.

    +
    hint?: Hint

    The index to use. If specified, then the query system will only consider plans using the hinted index.

    +
    diff --git a/docs/6.16/interfaces/DeleteOptions.html b/docs/6.16/interfaces/DeleteOptions.html new file mode 100644 index 00000000000..e96da265741 --- /dev/null +++ b/docs/6.16/interfaces/DeleteOptions.html @@ -0,0 +1,77 @@ +DeleteOptions | mongodb

    Interface DeleteOptions

    interface DeleteOptions {
        authdb?: string;
        bsonRegExp?: boolean;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        dbName?: string;
        enableUtf8Validation?: boolean;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        hint?: string | Document;
        ignoreUndefined?: boolean;
        let?: Document;
        maxTimeMS?: number;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        ordered?: boolean;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        serializeFunctions?: boolean;
        session?: ClientSession;
        timeoutMS?: number;
        useBigInt64?: boolean;
        willRetryWrite?: boolean;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    authdb?: string
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    collation?: CollationOptions

    Specifies the collation to use for the operation

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +

    Specifies the verbosity mode for the explain output.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    hint?: string | Document

    Specify that the update query should only consider plans using the hinted index

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    let?: Document

    Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0).

    +
    maxTimeMS?: number

    maxTimeMS is a server-side time limit in milliseconds for processing an operation.

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    ordered?: boolean

    If true, when an insert fails, don't execute the remaining writes. If false, continue with remaining inserts when one fails.

    +
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest).

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    willRetryWrite?: boolean

    Write Concern as an object

    +
    diff --git a/docs/6.16/interfaces/DeleteResult.html b/docs/6.16/interfaces/DeleteResult.html new file mode 100644 index 00000000000..a49fb8bd893 --- /dev/null +++ b/docs/6.16/interfaces/DeleteResult.html @@ -0,0 +1,5 @@ +DeleteResult | mongodb

    Interface DeleteResult

    interface DeleteResult {
        acknowledged: boolean;
        deletedCount: number;
    }

    Properties

    acknowledged: boolean

    Indicates whether this write result was acknowledged. If not, then all other members of this result will be undefined.

    +
    deletedCount: number

    The number of documents that were deleted

    +
    diff --git a/docs/6.16/interfaces/DeleteStatement.html b/docs/6.16/interfaces/DeleteStatement.html new file mode 100644 index 00000000000..2e33e0f45ab --- /dev/null +++ b/docs/6.16/interfaces/DeleteStatement.html @@ -0,0 +1,9 @@ +DeleteStatement | mongodb

    Interface DeleteStatement

    interface DeleteStatement {
        collation?: CollationOptions;
        hint?: Hint;
        limit: number;
        q: Document;
    }

    Properties

    Properties

    collation?: CollationOptions

    Specifies the collation to use for the operation.

    +
    hint?: Hint

    A document or string that specifies the index to use to support the query predicate.

    +
    limit: number

    The number of matching documents to delete.

    +

    The query that matches documents to delete.

    +
    diff --git a/docs/6.16/interfaces/DriverInfo.html b/docs/6.16/interfaces/DriverInfo.html new file mode 100644 index 00000000000..75ae469f8a4 --- /dev/null +++ b/docs/6.16/interfaces/DriverInfo.html @@ -0,0 +1,4 @@ +DriverInfo | mongodb

    Interface DriverInfo

    interface DriverInfo {
        name?: string;
        platform?: string;
        version?: string;
    }

    Properties

    Properties

    name?: string
    platform?: string
    version?: string
    diff --git a/docs/6.16/interfaces/DropCollectionOptions.html b/docs/6.16/interfaces/DropCollectionOptions.html new file mode 100644 index 00000000000..5ed04638899 --- /dev/null +++ b/docs/6.16/interfaces/DropCollectionOptions.html @@ -0,0 +1,72 @@ +DropCollectionOptions | mongodb

    Interface DropCollectionOptions

    interface DropCollectionOptions {
        authdb?: string;
        bsonRegExp?: boolean;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        dbName?: string;
        enableUtf8Validation?: boolean;
        encryptedFields?: Document;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        ignoreUndefined?: boolean;
        maxTimeMS?: number;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        serializeFunctions?: boolean;
        session?: ClientSession;
        timeoutMS?: number;
        useBigInt64?: boolean;
        willRetryWrite?: boolean;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    authdb?: string
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    collation?: CollationOptions

    Collation

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +
    encryptedFields?: Document

    Specifies the verbosity mode for the explain output.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    maxTimeMS?: number

    maxTimeMS is a server-side time limit in milliseconds for processing an operation.

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest).

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    willRetryWrite?: boolean

    Write Concern as an object

    +
    diff --git a/docs/6.16/interfaces/EndSessionOptions.html b/docs/6.16/interfaces/EndSessionOptions.html new file mode 100644 index 00000000000..c118ff12ce9 --- /dev/null +++ b/docs/6.16/interfaces/EndSessionOptions.html @@ -0,0 +1,5 @@ +EndSessionOptions | mongodb

    Interface EndSessionOptions

    interface EndSessionOptions {
        force?: boolean;
        forceClear?: boolean;
        timeoutMS?: number;
    }

    Properties

    force?: boolean
    forceClear?: boolean
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    diff --git a/docs/6.16/interfaces/ErrorDescription.html b/docs/6.16/interfaces/ErrorDescription.html new file mode 100644 index 00000000000..25cd52aaef9 --- /dev/null +++ b/docs/6.16/interfaces/ErrorDescription.html @@ -0,0 +1,6 @@ +ErrorDescription | mongodb

    Interface ErrorDescription

    interface ErrorDescription {
        $err?: string;
        errInfo?: Document;
        errmsg?: string;
        errorLabels?: string[];
        message?: string;
    }

    Hierarchy (view full)

    Properties

    $err?: string
    errInfo?: Document
    errmsg?: string
    errorLabels?: string[]
    message?: string
    diff --git a/docs/6.16/interfaces/EstimatedDocumentCountOptions.html b/docs/6.16/interfaces/EstimatedDocumentCountOptions.html new file mode 100644 index 00000000000..4af46895815 --- /dev/null +++ b/docs/6.16/interfaces/EstimatedDocumentCountOptions.html @@ -0,0 +1,72 @@ +EstimatedDocumentCountOptions | mongodb

    Interface EstimatedDocumentCountOptions

    interface EstimatedDocumentCountOptions {
        authdb?: string;
        bsonRegExp?: boolean;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        dbName?: string;
        enableUtf8Validation?: boolean;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        ignoreUndefined?: boolean;
        maxTimeMS?: number;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        serializeFunctions?: boolean;
        session?: ClientSession;
        timeoutMS?: number;
        useBigInt64?: boolean;
        willRetryWrite?: boolean;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    authdb?: string
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    collation?: CollationOptions

    Collation

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +

    Specifies the verbosity mode for the explain output.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    maxTimeMS?: number

    The maximum amount of time to allow the operation to run.

    +

    This option is sent only if the caller explicitly provides a value. The default is to not send a value.

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest).

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    willRetryWrite?: boolean

    Write Concern as an object

    +
    diff --git a/docs/6.16/interfaces/ExplainCommandOptions.html b/docs/6.16/interfaces/ExplainCommandOptions.html new file mode 100644 index 00000000000..4091c0ef23f --- /dev/null +++ b/docs/6.16/interfaces/ExplainCommandOptions.html @@ -0,0 +1,5 @@ +ExplainCommandOptions | mongodb

    Interface ExplainCommandOptions

    interface ExplainCommandOptions {
        maxTimeMS?: number;
        verbosity: string;
    }

    Properties

    Properties

    maxTimeMS?: number

    The maxTimeMS setting for the command.

    +
    verbosity: string

    The explain verbosity for the command.

    +
    diff --git a/docs/6.16/interfaces/ExplainOptions.html b/docs/6.16/interfaces/ExplainOptions.html new file mode 100644 index 00000000000..a543fca8ba3 --- /dev/null +++ b/docs/6.16/interfaces/ExplainOptions.html @@ -0,0 +1,15 @@ +ExplainOptions | mongodb

    Interface ExplainOptions

    When set, this configures an explain command. Valid values are boolean (for legacy compatibility, +see ExplainVerbosityLike), a string containing the explain verbosity, or an object containing the verbosity and +an optional maxTimeMS.

    +

    Examples of valid usage:

    +
    collection.find({ name: 'john doe' }, { explain: true });
    collection.find({ name: 'john doe' }, { explain: false });
    collection.find({ name: 'john doe' }, { explain: 'queryPlanner' });
    collection.find({ name: 'john doe' }, { explain: { verbosity: 'queryPlanner' } }); +
    + +

    maxTimeMS can be configured to limit the amount of time the server +spends executing an explain by providing an object:

    +
    // limits the `explain` command to no more than 2 seconds
    collection.find({ name: 'john doe' }, {
    explain: {
    verbosity: 'queryPlanner',
    maxTimeMS: 2000
    }
    }); +
    + +
    interface ExplainOptions {
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
    }

    Hierarchy (view full)

    Properties

    Properties

    Specifies the verbosity mode for the explain output.

    +
    diff --git a/docs/6.16/interfaces/FilterOperators.html b/docs/6.16/interfaces/FilterOperators.html new file mode 100644 index 00000000000..53d80f6cb2a --- /dev/null +++ b/docs/6.16/interfaces/FilterOperators.html @@ -0,0 +1,35 @@ +FilterOperators | mongodb

    Interface FilterOperators<TValue>

    interface FilterOperators<TValue> {
        __id?: undefined;
        $all?: readonly any[];
        $bitsAllClear?: BitwiseFilter;
        $bitsAllSet?: BitwiseFilter;
        $bitsAnyClear?: BitwiseFilter;
        $bitsAnySet?: BitwiseFilter;
        $elemMatch?: Document;
        $eq?: TValue;
        $exists?: boolean;
        $expr?: Record<string, any>;
        $geoIntersects?: {
            $geometry: Document;
        };
        $geoWithin?: Document;
        $gt?: TValue;
        $gte?: TValue;
        $in?: readonly TValue[];
        $jsonSchema?: Record<string, any>;
        $lt?: TValue;
        $lte?: TValue;
        $maxDistance?: number;
        $mod?: TValue extends number
            ? [number, number]
            : never;
        $ne?: TValue;
        $near?: Document;
        $nearSphere?: Document;
        $nin?: readonly TValue[];
        $not?: TValue extends string
            ? RegExp | FilterOperators<TValue<TValue>>
            : FilterOperators<TValue>;
        $options?: TValue extends string
            ? string
            : never;
        $rand?: Record<string, never>;
        $regex?: TValue extends string
            ? string | RegExp | BSONRegExp
            : never;
        $size?: TValue extends readonly any[]
            ? number
            : never;
        $type?:
            | "string"
            | "symbol"
            | "undefined"
            | "object"
            | "double"
            | "array"
            | "binData"
            | "objectId"
            | "bool"
            | "date"
            | "null"
            | "regex"
            | "dbPointer"
            | "javascript"
            | "javascriptWithScope"
            | "int"
            | "timestamp"
            | "long"
            | "decimal"
            | "minKey"
            | "maxKey"
            | BSON.BSONType;
        id?: undefined;
        toHexString?: any;
    }

    Type Parameters

    • TValue

    Hierarchy (view full)

    Properties

    __id?: undefined
    $all?: readonly any[]
    $bitsAllClear?: BitwiseFilter
    $bitsAllSet?: BitwiseFilter
    $bitsAnyClear?: BitwiseFilter
    $bitsAnySet?: BitwiseFilter
    $elemMatch?: Document
    $eq?: TValue
    $exists?: boolean

    When true, $exists matches the documents that contain the field, +including documents where the field value is null.

    +
    $expr?: Record<string, any>
    $geoIntersects?: {
        $geometry: Document;
    }
    $geoWithin?: Document
    $gt?: TValue
    $gte?: TValue
    $in?: readonly TValue[]
    $jsonSchema?: Record<string, any>
    $lt?: TValue
    $lte?: TValue
    $maxDistance?: number
    $mod?: TValue extends number
        ? [number, number]
        : never
    $ne?: TValue
    $near?: Document
    $nearSphere?: Document
    $nin?: readonly TValue[]
    $not?: TValue extends string
        ? RegExp | FilterOperators<TValue<TValue>>
        : FilterOperators<TValue>
    $options?: TValue extends string
        ? string
        : never
    $rand?: Record<string, never>
    $regex?: TValue extends string
        ? string | RegExp | BSONRegExp
        : never
    $size?: TValue extends readonly any[]
        ? number
        : never
    $type?:
        | "string"
        | "symbol"
        | "undefined"
        | "object"
        | "double"
        | "array"
        | "binData"
        | "objectId"
        | "bool"
        | "date"
        | "null"
        | "regex"
        | "dbPointer"
        | "javascript"
        | "javascriptWithScope"
        | "int"
        | "timestamp"
        | "long"
        | "decimal"
        | "minKey"
        | "maxKey"
        | BSON.BSONType
    id?: undefined

    Methods

    toHexString
    diff --git a/docs/6.16/interfaces/FindOneAndDeleteOptions.html b/docs/6.16/interfaces/FindOneAndDeleteOptions.html new file mode 100644 index 00000000000..9947a89b069 --- /dev/null +++ b/docs/6.16/interfaces/FindOneAndDeleteOptions.html @@ -0,0 +1,81 @@ +FindOneAndDeleteOptions | mongodb

    Interface FindOneAndDeleteOptions

    interface FindOneAndDeleteOptions {
        authdb?: string;
        bsonRegExp?: boolean;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        dbName?: string;
        enableUtf8Validation?: boolean;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        hint?: Document;
        ignoreUndefined?: boolean;
        includeResultMetadata?: boolean;
        let?: Document;
        maxTimeMS?: number;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        projection?: Document;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        serializeFunctions?: boolean;
        session?: ClientSession;
        sort?: Sort;
        timeoutMS?: number;
        useBigInt64?: boolean;
        willRetryWrite?: boolean;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    authdb?: string
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    collation?: CollationOptions

    Collation

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +

    Specifies the verbosity mode for the explain output.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    hint?: Document

    An optional hint for query optimization. See the command reference for more information.

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    includeResultMetadata?: boolean

    Return the ModifyResult instead of the modified document. Defaults to false

    +
    let?: Document

    Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0).

    +
    maxTimeMS?: number

    maxTimeMS is a server-side time limit in milliseconds for processing an operation.

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    projection?: Document

    Limits the fields to return for all matching documents.

    +
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest).

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    sort?: Sort

    Determines which document the operation modifies if the query selects multiple documents.

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    willRetryWrite?: boolean

    Write Concern as an object

    +
    diff --git a/docs/6.16/interfaces/FindOneAndReplaceOptions.html b/docs/6.16/interfaces/FindOneAndReplaceOptions.html new file mode 100644 index 00000000000..f82b1d569d4 --- /dev/null +++ b/docs/6.16/interfaces/FindOneAndReplaceOptions.html @@ -0,0 +1,87 @@ +FindOneAndReplaceOptions | mongodb

    Interface FindOneAndReplaceOptions

    interface FindOneAndReplaceOptions {
        authdb?: string;
        bsonRegExp?: boolean;
        bypassDocumentValidation?: boolean;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        dbName?: string;
        enableUtf8Validation?: boolean;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        hint?: Document;
        ignoreUndefined?: boolean;
        includeResultMetadata?: boolean;
        let?: Document;
        maxTimeMS?: number;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        projection?: Document;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        returnDocument?: ReturnDocument;
        serializeFunctions?: boolean;
        session?: ClientSession;
        sort?: Sort;
        timeoutMS?: number;
        upsert?: boolean;
        useBigInt64?: boolean;
        willRetryWrite?: boolean;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    authdb?: string
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    bypassDocumentValidation?: boolean

    Allow driver to bypass schema validation.

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    collation?: CollationOptions

    Collation

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +

    Specifies the verbosity mode for the explain output.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    hint?: Document

    An optional hint for query optimization. See the command reference for more information.

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    includeResultMetadata?: boolean

    Return the ModifyResult instead of the modified document. Defaults to false

    +
    let?: Document

    Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0).

    +
    maxTimeMS?: number

    maxTimeMS is a server-side time limit in milliseconds for processing an operation.

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    projection?: Document

    Limits the fields to return for all matching documents.

    +
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest).

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    returnDocument?: ReturnDocument

    When set to 'after', returns the updated document rather than the original. The default is 'before'.

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    sort?: Sort

    Determines which document the operation modifies if the query selects multiple documents.

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    upsert?: boolean

    Upsert the document if it does not exist.

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    willRetryWrite?: boolean

    Write Concern as an object

    +
    diff --git a/docs/6.16/interfaces/FindOneAndUpdateOptions.html b/docs/6.16/interfaces/FindOneAndUpdateOptions.html new file mode 100644 index 00000000000..5539e6e6a44 --- /dev/null +++ b/docs/6.16/interfaces/FindOneAndUpdateOptions.html @@ -0,0 +1,89 @@ +FindOneAndUpdateOptions | mongodb

    Interface FindOneAndUpdateOptions

    interface FindOneAndUpdateOptions {
        arrayFilters?: Document[];
        authdb?: string;
        bsonRegExp?: boolean;
        bypassDocumentValidation?: boolean;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        dbName?: string;
        enableUtf8Validation?: boolean;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        hint?: Document;
        ignoreUndefined?: boolean;
        includeResultMetadata?: boolean;
        let?: Document;
        maxTimeMS?: number;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        projection?: Document;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        returnDocument?: ReturnDocument;
        serializeFunctions?: boolean;
        session?: ClientSession;
        sort?: Sort;
        timeoutMS?: number;
        upsert?: boolean;
        useBigInt64?: boolean;
        willRetryWrite?: boolean;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    arrayFilters?: Document[]

    Optional list of array filters referenced in filtered positional operators

    +
    authdb?: string
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    bypassDocumentValidation?: boolean

    Allow driver to bypass schema validation.

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    collation?: CollationOptions

    Collation

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +

    Specifies the verbosity mode for the explain output.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    hint?: Document

    An optional hint for query optimization. See the command reference for more information.

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    includeResultMetadata?: boolean

    Return the ModifyResult instead of the modified document. Defaults to false

    +
    let?: Document

    Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0).

    +
    maxTimeMS?: number

    maxTimeMS is a server-side time limit in milliseconds for processing an operation.

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    projection?: Document

    Limits the fields to return for all matching documents.

    +
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest).

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    returnDocument?: ReturnDocument

    When set to 'after', returns the updated document rather than the original. The default is 'before'.

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    sort?: Sort

    Determines which document the operation modifies if the query selects multiple documents.

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    upsert?: boolean

    Upsert the document if it does not exist.

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    willRetryWrite?: boolean

    Write Concern as an object

    +
    diff --git a/docs/6.16/interfaces/FindOptions.html b/docs/6.16/interfaces/FindOptions.html new file mode 100644 index 00000000000..4bd9d7b3df5 --- /dev/null +++ b/docs/6.16/interfaces/FindOptions.html @@ -0,0 +1,112 @@ +FindOptions | mongodb

    Interface FindOptions<TSchema>

    interface FindOptions<TSchema> {
        allowDiskUse?: boolean;
        allowPartialResults?: boolean;
        authdb?: string;
        awaitData?: boolean;
        batchSize?: number;
        bsonRegExp?: boolean;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        dbName?: string;
        enableUtf8Validation?: boolean;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        hint?: Hint;
        ignoreUndefined?: boolean;
        let?: Document;
        limit?: number;
        max?: Document;
        maxAwaitTimeMS?: number;
        maxTimeMS?: number;
        min?: Document;
        noCursorTimeout?: boolean;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        oplogReplay?: boolean;
        projection?: Document;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        returnKey?: boolean;
        serializeFunctions?: boolean;
        session?: ClientSession;
        showRecordId?: boolean;
        singleBatch?: boolean;
        skip?: number;
        sort?: Sort;
        tailable?: boolean;
        timeout?: boolean;
        timeoutMS?: number;
        useBigInt64?: boolean;
        willRetryWrite?: boolean;
    }

    Type Parameters

    • TSchema extends Document = Document

      Unused schema definition, deprecated usage, only specify FindOptions with no generic

      +

    Hierarchy (view full)

    Properties

    allowDiskUse?: boolean

    Allows disk use for blocking sort operations exceeding 100MB memory. (MongoDB 3.2 or higher)

    +
    allowPartialResults?: boolean

    For queries against a sharded collection, allows the command (or subsequent getMore commands) to return partial results, rather than an error, if one or more queried shards are unavailable.

    +
    authdb?: string
    awaitData?: boolean

    Specify if the cursor is a tailable-await cursor. Requires tailable to be true

    +
    batchSize?: number

    Set the batchSize for the getMoreCommand when iterating over the query results.

    +
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    collation?: CollationOptions

    Specify collation (MongoDB 3.4 or higher) settings for update operation (see 3.4 documentation for available fields).

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +

    Specifies the verbosity mode for the explain output.

    +

    This API is deprecated in favor of collection.find().explain().

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    hint?: Hint

    Tell the query to use specific indexes in the query. Object of indexes to use, {'_id':1}

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    let?: Document

    Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0).

    +
    limit?: number

    Sets the limit of documents returned in the query.

    +
    max?: Document

    The exclusive upper bound for a specific index

    +
    maxAwaitTimeMS?: number

    The maximum amount of time for the server to wait on new documents to satisfy a tailable cursor query. Requires tailable and awaitData to be true

    +
    maxTimeMS?: number

    Number of milliseconds to wait before aborting the query.

    +
    min?: Document

    The inclusive lower bound for a specific index

    +
    noCursorTimeout?: boolean

    The server normally times out idle cursors after an inactivity period (10 minutes) to prevent excess memory use. Set this option to prevent that.

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    oplogReplay?: boolean

    Option to enable an optimized code path for queries looking for a particular range of ts values in the oplog. Requires tailable to be true.

    +

    Starting from MongoDB 4.4 this flag is not needed and will be ignored.

    +
    projection?: Document

    The fields to return in the query. Object of fields to either include or exclude (one of, not both), {'a':1, 'b': 1} or {'a': 0, 'b': 0}

    +
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest).

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    returnKey?: boolean

    If true, returns only the index keys in the resulting documents.

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    showRecordId?: boolean

    Determines whether to return the record identifier for each document. If true, adds a field $recordId to the returned documents.

    +
    singleBatch?: boolean

    Determines whether to close the cursor after the first batch. Defaults to false.

    +
    skip?: number

    Set to skip N documents ahead in your query (useful for pagination).

    +
    sort?: Sort

    Set to sort the documents coming back from the query. Array of indexes, [['a', 1]] etc.

    +
    tailable?: boolean

    Specify if the cursor is tailable.

    +
    timeout?: boolean

    Specify if the cursor can timeout.

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    willRetryWrite?: boolean
    diff --git a/docs/6.16/interfaces/GCPEncryptionKeyOptions.html b/docs/6.16/interfaces/GCPEncryptionKeyOptions.html new file mode 100644 index 00000000000..08164ebf5cc --- /dev/null +++ b/docs/6.16/interfaces/GCPEncryptionKeyOptions.html @@ -0,0 +1,14 @@ +GCPEncryptionKeyOptions | mongodb

    Interface GCPEncryptionKeyOptions

    Configuration options for making an AWS encryption key

    +
    interface GCPEncryptionKeyOptions {
        endpoint?: string;
        keyName: string;
        keyRing: string;
        keyVersion?: string;
        location: string;
        projectId: string;
    }

    Properties

    endpoint?: string

    KMS URL, defaults to https://www.googleapis.com/auth/cloudkms

    +
    keyName: string

    Key name

    +
    keyRing: string

    Key ring name

    +
    keyVersion?: string

    Key version

    +
    location: string

    Location name (e.g. "global")

    +
    projectId: string

    GCP project ID

    +
    diff --git a/docs/6.16/interfaces/GridFSBucketOptions.html b/docs/6.16/interfaces/GridFSBucketOptions.html new file mode 100644 index 00000000000..f7a46a60648 --- /dev/null +++ b/docs/6.16/interfaces/GridFSBucketOptions.html @@ -0,0 +1,12 @@ +GridFSBucketOptions | mongodb

    Interface GridFSBucketOptions

    interface GridFSBucketOptions {
        bucketName?: string;
        chunkSizeBytes?: number;
        readPreference?: ReadPreference;
        timeoutMS?: number;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    bucketName?: string

    The 'files' and 'chunks' collections will be prefixed with the bucket name followed by a dot.

    +
    chunkSizeBytes?: number

    Number of bytes stored in each chunk. Defaults to 255KB

    +
    readPreference?: ReadPreference

    Read preference to be passed to read operations

    +
    timeoutMS?: number

    Specifies the lifetime duration of a gridFS stream. If any async operations are in progress +when this timeout expires, the stream will throw a timeout error.

    +

    Write Concern as an object

    +
    diff --git a/docs/6.16/interfaces/GridFSBucketReadStreamOptions.html b/docs/6.16/interfaces/GridFSBucketReadStreamOptions.html new file mode 100644 index 00000000000..d3b7cdab719 --- /dev/null +++ b/docs/6.16/interfaces/GridFSBucketReadStreamOptions.html @@ -0,0 +1,10 @@ +GridFSBucketReadStreamOptions | mongodb

    Interface GridFSBucketReadStreamOptions

    interface GridFSBucketReadStreamOptions {
        end?: number;
        skip?: number;
        sort?: Sort;
        start?: number;
        timeoutMS?: number;
    }

    Hierarchy (view full)

    Properties

    Properties

    end?: number

    0-indexed non-negative byte offset to the end of the file contents +to be returned by the stream. end is non-inclusive

    +
    skip?: number
    sort?: Sort
    start?: number

    0-indexed non-negative byte offset from the beginning of the file

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    diff --git a/docs/6.16/interfaces/GridFSBucketReadStreamOptionsWithRevision.html b/docs/6.16/interfaces/GridFSBucketReadStreamOptionsWithRevision.html new file mode 100644 index 00000000000..a4c54bcf785 --- /dev/null +++ b/docs/6.16/interfaces/GridFSBucketReadStreamOptionsWithRevision.html @@ -0,0 +1,14 @@ +GridFSBucketReadStreamOptionsWithRevision | mongodb

    Interface GridFSBucketReadStreamOptionsWithRevision

    interface GridFSBucketReadStreamOptionsWithRevision {
        end?: number;
        revision?: number;
        skip?: number;
        sort?: Sort;
        start?: number;
        timeoutMS?: number;
    }

    Hierarchy (view full)

    Properties

    end?: number

    0-indexed non-negative byte offset to the end of the file contents +to be returned by the stream. end is non-inclusive

    +
    revision?: number

    The revision number relative to the oldest file with the given filename. 0 +gets you the oldest file, 1 gets you the 2nd oldest, -1 gets you the +newest.

    +
    skip?: number
    sort?: Sort
    start?: number

    0-indexed non-negative byte offset from the beginning of the file

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    diff --git a/docs/6.16/interfaces/GridFSBucketWriteStreamOptions.html b/docs/6.16/interfaces/GridFSBucketWriteStreamOptions.html new file mode 100644 index 00000000000..1624404538a --- /dev/null +++ b/docs/6.16/interfaces/GridFSBucketWriteStreamOptions.html @@ -0,0 +1,17 @@ +GridFSBucketWriteStreamOptions | mongodb

    Interface GridFSBucketWriteStreamOptions

    interface GridFSBucketWriteStreamOptions {
        aliases?: string[];
        chunkSizeBytes?: number;
        contentType?: string;
        id?: ObjectId;
        metadata?: Document;
        timeoutMS?: number;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    aliases?: string[]

    Array of strings to store in the file document's aliases field.

    +

    Will be removed in the next major version. Add an aliases field to the metadata document instead.

    +
    chunkSizeBytes?: number

    Overwrite this bucket's chunkSizeBytes for this file

    +
    contentType?: string

    String to store in the file document's contentType field.

    +

    Will be removed in the next major version. Add a contentType field to the metadata document instead.

    +

    Custom file id for the GridFS file.

    +
    metadata?: Document

    Object to store in the file document's metadata field

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +

    Write Concern as an object

    +
    diff --git a/docs/6.16/interfaces/GridFSChunk.html b/docs/6.16/interfaces/GridFSChunk.html new file mode 100644 index 00000000000..15e962b8c4e --- /dev/null +++ b/docs/6.16/interfaces/GridFSChunk.html @@ -0,0 +1,5 @@ +GridFSChunk | mongodb

    Interface GridFSChunk

    interface GridFSChunk {
        _id: ObjectId;
        data: Uint8Array | Buffer;
        files_id: ObjectId;
        n: number;
    }

    Properties

    Properties

    data: Uint8Array | Buffer
    files_id: ObjectId
    n: number
    diff --git a/docs/6.16/interfaces/GridFSFile.html b/docs/6.16/interfaces/GridFSFile.html new file mode 100644 index 00000000000..58b6bcbbc01 --- /dev/null +++ b/docs/6.16/interfaces/GridFSFile.html @@ -0,0 +1,11 @@ +GridFSFile | mongodb

    Interface GridFSFile

    interface GridFSFile {
        _id: ObjectId;
        aliases?: string[];
        chunkSize: number;
        contentType?: string;
        filename: string;
        length: number;
        metadata?: Document;
        uploadDate: Date;
    }

    Properties

    aliases?: string[]

    Will be removed in the next major version.

    +
    chunkSize: number
    contentType?: string

    Will be removed in the next major version.

    +
    filename: string
    length: number
    metadata?: Document
    uploadDate: Date
    diff --git a/docs/6.16/interfaces/HedgeOptions.html b/docs/6.16/interfaces/HedgeOptions.html new file mode 100644 index 00000000000..2bd456bdf8a --- /dev/null +++ b/docs/6.16/interfaces/HedgeOptions.html @@ -0,0 +1,3 @@ +HedgeOptions | mongodb

    Interface HedgeOptions

    interface HedgeOptions {
        enabled?: boolean;
    }

    Properties

    Properties

    enabled?: boolean

    Explicitly enable or disable hedged reads.

    +
    diff --git a/docs/6.16/interfaces/IdPInfo.html b/docs/6.16/interfaces/IdPInfo.html new file mode 100644 index 00000000000..19429bc4644 --- /dev/null +++ b/docs/6.16/interfaces/IdPInfo.html @@ -0,0 +1,10 @@ +IdPInfo | mongodb

    Interface IdPInfo

    The information returned by the server on the IDP server.

    +
    interface IdPInfo {
        clientId: string;
        issuer: string;
        requestScopes?: string[];
    }

    Properties

    clientId: string

    A unique client ID for this OIDC client.

    +
    issuer: string

    A URL which describes the Authentication Server. This identifier should +be the iss of provided access tokens, and be viable for RFC8414 metadata +discovery and RFC9207 identification.

    +
    requestScopes?: string[]

    A list of additional scopes to request from IdP.

    +
    diff --git a/docs/6.16/interfaces/IdPServerResponse.html b/docs/6.16/interfaces/IdPServerResponse.html new file mode 100644 index 00000000000..8e77e4541dc --- /dev/null +++ b/docs/6.16/interfaces/IdPServerResponse.html @@ -0,0 +1,9 @@ +IdPServerResponse | mongodb

    Interface IdPServerResponse

    The response from the IdP server with the access token and +optional expiration time and refresh token.

    +
    interface IdPServerResponse {
        accessToken: string;
        expiresInSeconds?: number;
        refreshToken?: string;
    }

    Properties

    accessToken: string

    The OIDC access token.

    +
    expiresInSeconds?: number

    The time when the access token expires. For future use.

    +
    refreshToken?: string

    The refresh token, if applicable, to be used by the callback to request a new token from the issuer.

    +
    diff --git a/docs/6.16/interfaces/IndexDescription.html b/docs/6.16/interfaces/IndexDescription.html new file mode 100644 index 00000000000..65064ca2c2c --- /dev/null +++ b/docs/6.16/interfaces/IndexDescription.html @@ -0,0 +1,32 @@ +IndexDescription | mongodb

    Interface IndexDescription

    interface IndexDescription {
        2dsphereIndexVersion?: number;
        background?: boolean;
        bits?: number;
        bucketSize?: number;
        collation?: CollationOptions;
        default_language?: string;
        expireAfterSeconds?: number;
        hidden?: boolean;
        key: {
            [key: string]: IndexDirection;
        } | Map<string, IndexDirection>;
        language_override?: string;
        max?: number;
        min?: number;
        name?: string;
        partialFilterExpression?: Document;
        sparse?: boolean;
        storageEngine?: Document;
        textIndexVersion?: number;
        unique?: boolean;
        version?: number;
        weights?: Document;
        wildcardProjection?: Document;
    }

    Hierarchy

    • Pick<CreateIndexesOptions,
          | "background"
          | "unique"
          | "partialFilterExpression"
          | "sparse"
          | "hidden"
          | "expireAfterSeconds"
          | "storageEngine"
          | "version"
          | "weights"
          | "default_language"
          | "language_override"
          | "textIndexVersion"
          | "2dsphereIndexVersion"
          | "bits"
          | "min"
          | "max"
          | "bucketSize"
          | "wildcardProjection">
      • IndexDescription

    Properties

    2dsphereIndexVersion?: number
    background?: boolean

    Creates the index in the background, yielding whenever possible.

    +
    bits?: number
    bucketSize?: number
    collation?: CollationOptions
    default_language?: string
    expireAfterSeconds?: number

    Allows you to expire data on indexes applied to a data (MongoDB 2.2 or higher)

    +
    hidden?: boolean

    Specifies that the index should exist on the target collection but should not be used by the query planner when executing operations. (MongoDB 4.4 or higher)

    +
    key: {
        [key: string]: IndexDirection;
    } | Map<string, IndexDirection>
    language_override?: string
    max?: number

    For geospatial indexes set the high bound for the co-ordinates.

    +
    min?: number

    For geospatial indexes set the lower bound for the co-ordinates.

    +
    name?: string
    partialFilterExpression?: Document

    Creates a partial index based on the given filter object (MongoDB 3.2 or higher)

    +
    sparse?: boolean

    Creates a sparse index.

    +
    storageEngine?: Document

    Allows users to configure the storage engine on a per-index basis when creating an index. (MongoDB 3.0 or higher)

    +
    textIndexVersion?: number
    unique?: boolean

    Creates an unique index.

    +
    version?: number

    Specifies the index version number, either 0 or 1.

    +
    weights?: Document
    wildcardProjection?: Document
    diff --git a/docs/6.16/interfaces/IndexInformationOptions.html b/docs/6.16/interfaces/IndexInformationOptions.html new file mode 100644 index 00000000000..48acc3ec34f --- /dev/null +++ b/docs/6.16/interfaces/IndexInformationOptions.html @@ -0,0 +1,99 @@ +IndexInformationOptions | mongodb

    Interface IndexInformationOptions

    interface IndexInformationOptions {
        awaitData?: boolean;
        batchSize?: number;
        bsonRegExp?: boolean;
        checkKeys?: boolean;
        comment?: unknown;
        enableUtf8Validation?: boolean;
        fieldsAsRaw?: Document;
        full?: boolean;
        ignoreUndefined?: boolean;
        maxAwaitTimeMS?: number;
        maxTimeMS?: number;
        noCursorTimeout?: boolean;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        serializeFunctions?: boolean;
        session?: ClientSession;
        tailable?: boolean;
        timeoutMode?: CursorTimeoutMode;
        timeoutMS?: number;
        useBigInt64?: boolean;
    }

    Hierarchy (view full)

    Properties

    awaitData?: boolean

    If awaitData is set to true, when the cursor reaches the end of the capped collection, +MongoDB blocks the query thread for a period of time waiting for new data to arrive. +When new data is inserted into the capped collection, the blocked thread is signaled +to wake up and return the next batch to the client.

    +
    batchSize?: number

    Specifies the number of documents to return in each response from MongoDB

    +
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    full?: boolean

    When true, an array of index descriptions is returned. +When false, the driver returns an object that with keys corresponding to index names with values +corresponding to the entries of the indexes' key.

    +

    For example, the given the following indexes:

    +
    [ { name: 'a_1', key: { a: 1 } }, { name: 'b_1_c_1' , key: { b: 1, c: 1 } }]
    +
    + +

    When full is true, the above array is returned. When full is false, the following is returned:

    +
    {
    'a_1': [['a', 1]],
    'b_1_c_1': [['b', 1], ['c', 1]],
    } +
    + +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    maxAwaitTimeMS?: number

    When applicable maxAwaitTimeMS controls the amount of time subsequent getMores +that a cursor uses to fetch more data should take. (ex. cursor.next())

    +
    maxTimeMS?: number

    When applicable maxTimeMS controls the amount of time the initial command +that constructs a cursor should take. (ex. find, aggregate, listCollections)

    +
    noCursorTimeout?: boolean
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike
    readPreference?: ReadPreferenceLike
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession
    tailable?: boolean

    By default, MongoDB will automatically close a cursor when the +client has exhausted all results in the cursor. However, for capped collections +you may use a Tailable Cursor that remains open after the client exhausts +the results in the initial cursor.

    +
    timeoutMode?: CursorTimeoutMode

    Specifies how timeoutMS is applied to the cursor. Can be either 'cursorLifeTime' or 'iteration' +When set to 'iteration', the deadline specified by timeoutMS applies to each call of +cursor.next(). +When set to 'cursorLifetime', the deadline applies to the life of the entire cursor.

    +

    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.

    +
    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. +
    + +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error. See AbstractCursorOptions.timeoutMode for more details on how this option applies to cursors.

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    diff --git a/docs/6.16/interfaces/InsertManyResult.html b/docs/6.16/interfaces/InsertManyResult.html new file mode 100644 index 00000000000..061c0f46968 --- /dev/null +++ b/docs/6.16/interfaces/InsertManyResult.html @@ -0,0 +1,7 @@ +InsertManyResult | mongodb

    Interface InsertManyResult<TSchema>

    interface InsertManyResult<TSchema> {
        acknowledged: boolean;
        insertedCount: number;
        insertedIds: {
            [key: number]: InferIdType<TSchema>;
        };
    }

    Type Parameters

    Properties

    acknowledged: boolean

    Indicates whether this write result was acknowledged. If not, then all other members of this result will be undefined

    +
    insertedCount: number

    The number of inserted documents for this operations

    +
    insertedIds: {
        [key: number]: InferIdType<TSchema>;
    }

    Map of the index of the inserted document to the id of the inserted document

    +
    diff --git a/docs/6.16/interfaces/InsertOneModel.html b/docs/6.16/interfaces/InsertOneModel.html new file mode 100644 index 00000000000..7d642e83ea4 --- /dev/null +++ b/docs/6.16/interfaces/InsertOneModel.html @@ -0,0 +1,3 @@ +InsertOneModel | mongodb

    Interface InsertOneModel<TSchema>

    interface InsertOneModel<TSchema> {
        document: OptionalId<TSchema>;
    }

    Type Parameters

    Properties

    Properties

    document: OptionalId<TSchema>

    The document to insert.

    +
    diff --git a/docs/6.16/interfaces/InsertOneOptions.html b/docs/6.16/interfaces/InsertOneOptions.html new file mode 100644 index 00000000000..076a441ebc5 --- /dev/null +++ b/docs/6.16/interfaces/InsertOneOptions.html @@ -0,0 +1,75 @@ +InsertOneOptions | mongodb

    Interface InsertOneOptions

    interface InsertOneOptions {
        authdb?: string;
        bsonRegExp?: boolean;
        bypassDocumentValidation?: boolean;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        dbName?: string;
        enableUtf8Validation?: boolean;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        forceServerObjectId?: boolean;
        ignoreUndefined?: boolean;
        maxTimeMS?: number;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        serializeFunctions?: boolean;
        session?: ClientSession;
        timeoutMS?: number;
        useBigInt64?: boolean;
        willRetryWrite?: boolean;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    authdb?: string
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    bypassDocumentValidation?: boolean

    Allow driver to bypass schema validation.

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    collation?: CollationOptions

    Collation

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +

    Specifies the verbosity mode for the explain output.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    forceServerObjectId?: boolean

    Force server to assign _id values instead of driver.

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    maxTimeMS?: number

    maxTimeMS is a server-side time limit in milliseconds for processing an operation.

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest).

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    willRetryWrite?: boolean

    Write Concern as an object

    +
    diff --git a/docs/6.16/interfaces/InsertOneResult.html b/docs/6.16/interfaces/InsertOneResult.html new file mode 100644 index 00000000000..f189b2f32bf --- /dev/null +++ b/docs/6.16/interfaces/InsertOneResult.html @@ -0,0 +1,5 @@ +InsertOneResult | mongodb

    Interface InsertOneResult<TSchema>

    interface InsertOneResult<TSchema> {
        acknowledged: boolean;
        insertedId: InferIdType<TSchema>;
    }

    Type Parameters

    Properties

    acknowledged: boolean

    Indicates whether this write result was acknowledged. If not, then all other members of this result will be undefined

    +
    insertedId: InferIdType<TSchema>

    The identifier that was inserted. If the server generated the identifier, this value will be null as the driver does not have access to that data

    +
    diff --git a/docs/6.16/interfaces/KMIPEncryptionKeyOptions.html b/docs/6.16/interfaces/KMIPEncryptionKeyOptions.html new file mode 100644 index 00000000000..60bc9b0b4fa --- /dev/null +++ b/docs/6.16/interfaces/KMIPEncryptionKeyOptions.html @@ -0,0 +1,10 @@ +KMIPEncryptionKeyOptions | mongodb

    Interface KMIPEncryptionKeyOptions

    Configuration options for making a KMIP encryption key

    +
    interface KMIPEncryptionKeyOptions {
        delegated?: boolean;
        endpoint?: string;
        keyId?: string;
    }

    Properties

    delegated?: boolean

    If true, this key should be decrypted by the KMIP server.

    +

    Requires mongodb-client-encryption>=6.0.1.

    +
    endpoint?: string

    Host with optional port.

    +
    keyId?: string

    keyId is the KMIP Unique Identifier to a 96 byte KMIP Secret Data managed object.

    +

    If keyId is omitted, a random 96 byte KMIP Secret Data managed object will be created.

    +
    diff --git a/docs/6.16/interfaces/KMIPKMSProviderConfiguration.html b/docs/6.16/interfaces/KMIPKMSProviderConfiguration.html new file mode 100644 index 00000000000..f9a1f144111 --- /dev/null +++ b/docs/6.16/interfaces/KMIPKMSProviderConfiguration.html @@ -0,0 +1,5 @@ +KMIPKMSProviderConfiguration | mongodb

    Interface KMIPKMSProviderConfiguration

    interface KMIPKMSProviderConfiguration {
        endpoint?: string;
    }

    Properties

    Properties

    endpoint?: string

    The output endpoint string. +The endpoint consists of a hostname and port separated by a colon. +E.g. "example.com:123". A port is always present.

    +
    diff --git a/docs/6.16/interfaces/KMSProviders.html b/docs/6.16/interfaces/KMSProviders.html new file mode 100644 index 00000000000..fbd363370b4 --- /dev/null +++ b/docs/6.16/interfaces/KMSProviders.html @@ -0,0 +1,13 @@ +KMSProviders | mongodb

    Interface KMSProviders

    Configuration options that are used by specific KMS providers during key generation, encryption, and decryption.

    +

    Named KMS providers are not supported for automatic KMS credential fetching.

    +
    interface KMSProviders {
        aws?: AWSKMSProviderConfiguration | Record<string, never>;
        azure?: AzureKMSProviderConfiguration | Record<string, never>;
        gcp?: GCPKMSProviderConfiguration | Record<string, never>;
        kmip?: KMIPKMSProviderConfiguration;
        local?: LocalKMSProviderConfiguration;
        [key: `aws:${string}`]: AWSKMSProviderConfiguration;
        [key: `local:${string}`]: LocalKMSProviderConfiguration;
        [key: `kmip:${string}`]: KMIPKMSProviderConfiguration;
        [key: `azure:${string}`]: AzureKMSProviderConfiguration;
        [key: `gcp:${string}`]: GCPKMSProviderConfiguration;
    }

    Indexable

    Properties

    Properties

    aws?: AWSKMSProviderConfiguration | Record<string, never>

    Configuration options for using 'aws' as your KMS provider

    +
    azure?: AzureKMSProviderConfiguration | Record<string, never>

    Configuration options for using 'azure' as your KMS provider

    +
    gcp?: GCPKMSProviderConfiguration | Record<string, never>

    Configuration options for using 'gcp' as your KMS provider

    +

    Configuration options for using 'kmip' as your KMS provider

    +

    Configuration options for using 'local' as your KMS provider

    +
    diff --git a/docs/6.16/interfaces/ListCollectionsOptions.html b/docs/6.16/interfaces/ListCollectionsOptions.html new file mode 100644 index 00000000000..1acdacc511c --- /dev/null +++ b/docs/6.16/interfaces/ListCollectionsOptions.html @@ -0,0 +1,88 @@ +ListCollectionsOptions | mongodb

    Interface ListCollectionsOptions

    interface ListCollectionsOptions {
        authdb?: string;
        authorizedCollections?: boolean;
        batchSize?: number;
        bsonRegExp?: boolean;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        dbName?: string;
        enableUtf8Validation?: boolean;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        ignoreUndefined?: boolean;
        maxTimeMS?: number;
        nameOnly?: boolean;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        serializeFunctions?: boolean;
        session?: ClientSession;
        signal?: AbortSignal;
        timeoutMS?: number;
        useBigInt64?: boolean;
        willRetryWrite?: boolean;
    }

    Hierarchy (view full)

    Properties

    authdb?: string
    authorizedCollections?: boolean

    Since 4.0: If true and nameOnly is true, allows a user without the required privilege (i.e. listCollections action on the database) to run the command when access control is enforced.

    +
    batchSize?: number

    The batchSize for the returned command cursor or if pre 2.8 the systems batch collection

    +
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    collation?: CollationOptions

    Collation

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +

    Specifies the verbosity mode for the explain output.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    maxTimeMS?: number

    maxTimeMS is a server-side time limit in milliseconds for processing an operation.

    +
    nameOnly?: boolean

    Since 4.0: If true, will only return the collection name in the response, and will omit additional info

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest).

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    signal?: AbortSignal

    When provided, the corresponding AbortController can be used to abort an asynchronous action.

    +

    The signal.reason value is used as the error thrown.

    +

    NOTE: If an abort signal aborts an operation while the driver is writing to the underlying +socket or reading the response from the server, the socket will be closed. +If signals are aborted at a high rate during socket read/writes this can lead to a high rate of connection reestablishment.

    +

    We plan to mitigate this in a future release, please follow NODE-6062 (timeoutMS expiration suffers the same limitation).

    +

    AbortSignals are likely a best fit for human interactive interruption (ex. ctrl-C) where the frequency +of cancellation is reasonably low. If a signal is programmatically aborted for 100s of operations you can empty +the driver's connection pool.

    +
    const controller = new AbortController();
    const { signal } = controller;
    process.on('SIGINT', () => controller.abort(new Error('^C pressed')));

    try {
    const res = await fetch('...', { signal });
    await collection.findOne(await res.json(), { signal });
    catch (error) {
    if (error === signal.reason) {
    // signal abort error handling
    }
    } +
    + +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    willRetryWrite?: boolean
    diff --git a/docs/6.16/interfaces/ListDatabasesOptions.html b/docs/6.16/interfaces/ListDatabasesOptions.html new file mode 100644 index 00000000000..d7a60976dfd --- /dev/null +++ b/docs/6.16/interfaces/ListDatabasesOptions.html @@ -0,0 +1,77 @@ +ListDatabasesOptions | mongodb

    Interface ListDatabasesOptions

    interface ListDatabasesOptions {
        authdb?: string;
        authorizedDatabases?: boolean;
        bsonRegExp?: boolean;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        dbName?: string;
        enableUtf8Validation?: boolean;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        filter?: Document;
        ignoreUndefined?: boolean;
        maxTimeMS?: number;
        nameOnly?: boolean;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        serializeFunctions?: boolean;
        session?: ClientSession;
        timeoutMS?: number;
        useBigInt64?: boolean;
        willRetryWrite?: boolean;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    authdb?: string
    authorizedDatabases?: boolean

    A flag that determines which databases are returned based on the user privileges when access control is enabled

    +
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    collation?: CollationOptions

    Collation

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +

    Specifies the verbosity mode for the explain output.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    filter?: Document

    A query predicate that determines which databases are listed

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    maxTimeMS?: number

    maxTimeMS is a server-side time limit in milliseconds for processing an operation.

    +
    nameOnly?: boolean

    A flag to indicate whether the command should return just the database names, or return both database names and size information

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest).

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    willRetryWrite?: boolean

    Write Concern as an object

    +
    diff --git a/docs/6.16/interfaces/ListDatabasesResult.html b/docs/6.16/interfaces/ListDatabasesResult.html new file mode 100644 index 00000000000..82723aac1a6 --- /dev/null +++ b/docs/6.16/interfaces/ListDatabasesResult.html @@ -0,0 +1,5 @@ +ListDatabasesResult | mongodb

    Interface ListDatabasesResult

    interface ListDatabasesResult {
        databases: ({
            empty?: boolean;
            name: string;
            sizeOnDisk?: number;
        } & Document)[];
        ok: 0 | 1;
        totalSize?: number;
        totalSizeMb?: number;
    }

    Properties

    databases: ({
        empty?: boolean;
        name: string;
        sizeOnDisk?: number;
    } & Document)[]
    ok: 0 | 1
    totalSize?: number
    totalSizeMb?: number
    diff --git a/docs/6.16/interfaces/LocalKMSProviderConfiguration.html b/docs/6.16/interfaces/LocalKMSProviderConfiguration.html new file mode 100644 index 00000000000..3daf6349a7b --- /dev/null +++ b/docs/6.16/interfaces/LocalKMSProviderConfiguration.html @@ -0,0 +1,4 @@ +LocalKMSProviderConfiguration | mongodb

    Interface LocalKMSProviderConfiguration

    interface LocalKMSProviderConfiguration {
        key: string | Uint8Array | Binary;
    }

    Properties

    key +

    Properties

    key: string | Uint8Array | Binary

    The master key used to encrypt/decrypt data keys. +A 96-byte long Buffer or base64 encoded string.

    +
    diff --git a/docs/6.16/interfaces/Log.html b/docs/6.16/interfaces/Log.html new file mode 100644 index 00000000000..e0e6aa24742 --- /dev/null +++ b/docs/6.16/interfaces/Log.html @@ -0,0 +1,5 @@ +Log | mongodb

    Interface Log

    interface Log {
        c: MongoLoggableComponent;
        message?: string;
        s: SeverityLevel;
        t: Date;
    }

    Hierarchy

    • Record<string, any>
      • Log

    Properties

    c +message? +s +t +

    Properties

    message?: string
    t: Date
    diff --git a/docs/6.16/interfaces/LogComponentSeveritiesClientOptions.html b/docs/6.16/interfaces/LogComponentSeveritiesClientOptions.html new file mode 100644 index 00000000000..bda5f94e1c4 --- /dev/null +++ b/docs/6.16/interfaces/LogComponentSeveritiesClientOptions.html @@ -0,0 +1,13 @@ +LogComponentSeveritiesClientOptions | mongodb

    Interface LogComponentSeveritiesClientOptions

    interface LogComponentSeveritiesClientOptions {
        client?: SeverityLevel;
        command?: SeverityLevel;
        connection?: SeverityLevel;
        default?: SeverityLevel;
        serverSelection?: SeverityLevel;
        topology?: SeverityLevel;
    }

    Properties

    client?: SeverityLevel

    Optional severity level for client component

    +
    command?: SeverityLevel

    Optional severity level for command component

    +
    connection?: SeverityLevel

    Optional severity level for connection component

    +
    default?: SeverityLevel

    Optional default severity level to be used if any of the above are unset

    +
    serverSelection?: SeverityLevel

    Optional severity level for server selection component

    +
    topology?: SeverityLevel

    Optional severity level for topology component

    +
    diff --git a/docs/6.16/interfaces/ModifyResult.html b/docs/6.16/interfaces/ModifyResult.html new file mode 100644 index 00000000000..72a3db789e5 --- /dev/null +++ b/docs/6.16/interfaces/ModifyResult.html @@ -0,0 +1,4 @@ +ModifyResult | mongodb

    Interface ModifyResult<TSchema>

    interface ModifyResult<TSchema> {
        lastErrorObject?: Document;
        ok: 0 | 1;
        value: null | WithId<TSchema>;
    }

    Type Parameters

    Properties

    Properties

    lastErrorObject?: Document
    ok: 0 | 1
    value: null | WithId<TSchema>
    diff --git a/docs/6.16/interfaces/MongoClientOptions.html b/docs/6.16/interfaces/MongoClientOptions.html new file mode 100644 index 00000000000..83deff53941 --- /dev/null +++ b/docs/6.16/interfaces/MongoClientOptions.html @@ -0,0 +1,287 @@ +MongoClientOptions | mongodb

    Interface MongoClientOptions

    Describes all possible URI query options for the mongo client

    +
    interface MongoClientOptions {
        allowPartialTrustChain?: boolean;
        ALPNProtocols?: Uint8Array | string[] | Uint8Array[];
        appName?: string;
        auth?: Auth;
        authMechanism?: AuthMechanism;
        authMechanismProperties?: AuthMechanismProperties;
        authSource?: string;
        autoEncryption?: AutoEncryptionOptions;
        autoSelectFamily?: boolean;
        autoSelectFamilyAttemptTimeout?: number;
        bsonRegExp?: boolean;
        ca?: string | Buffer | (string | Buffer)[];
        cert?: string | Buffer | (string | Buffer)[];
        checkKeys?: boolean;
        checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined);
        ciphers?: string;
        compressors?: string | (
            | "none"
            | "snappy"
            | "zlib"
            | "zstd")[];
        connectTimeoutMS?: number;
        crl?: string | Buffer | (string | Buffer)[];
        directConnection?: boolean;
        driverInfo?: DriverInfo;
        ecdhCurve?: string;
        enableUtf8Validation?: boolean;
        family?: number;
        fieldsAsRaw?: Document;
        forceServerObjectId?: boolean;
        heartbeatFrequencyMS?: number;
        hints?: number;
        ignoreUndefined?: boolean;
        journal?: boolean;
        keepAliveInitialDelay?: number;
        key?: string | Buffer | (string | Buffer | KeyObject)[];
        loadBalanced?: boolean;
        localAddress?: string;
        localPort?: number;
        localThresholdMS?: number;
        lookup?: LookupFunction;
        maxConnecting?: number;
        maxIdleTimeMS?: number;
        maxPoolSize?: number;
        maxStalenessSeconds?: number;
        minDHSize?: number;
        minHeartbeatFrequencyMS?: number;
        minPoolSize?: number;
        mongodbLogComponentSeverities?: LogComponentSeveritiesClientOptions;
        mongodbLogMaxDocumentLength?: number;
        mongodbLogPath?: MongoDBLogWritable | "stdout" | "stderr";
        monitorCommands?: boolean;
        noDelay?: boolean;
        passphrase?: string;
        pfx?: string | Buffer | (string | Buffer | PxfObject)[];
        pkFactory?: PkFactory;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        proxyHost?: string;
        proxyPassword?: string;
        proxyPort?: number;
        proxyUsername?: string;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readConcernLevel?: ReadConcernLevel;
        readPreference?: ReadPreference | ReadPreferenceMode;
        readPreferenceTags?: TagSet[];
        rejectUnauthorized?: boolean;
        replicaSet?: string;
        retryReads?: boolean;
        retryWrites?: boolean;
        secureContext?: SecureContext;
        secureProtocol?: string;
        serializeFunctions?: boolean;
        serverApi?: "1" | ServerApi;
        serverMonitoringMode?: ServerMonitoringMode;
        servername?: string;
        serverSelectionTimeoutMS?: number;
        session?: Buffer;
        socketTimeoutMS?: number;
        srvMaxHosts?: number;
        srvServiceName?: string;
        ssl?: boolean;
        timeoutMS?: number;
        tls?: boolean;
        tlsAllowInvalidCertificates?: boolean;
        tlsAllowInvalidHostnames?: boolean;
        tlsCAFile?: string;
        tlsCertificateKeyFile?: string;
        tlsCertificateKeyFilePassword?: string;
        tlsCRLFile?: string;
        tlsInsecure?: boolean;
        useBigInt64?: boolean;
        w?: W;
        waitQueueTimeoutMS?: number;
        writeConcern?: WriteConcern | WriteConcernSettings;
        wtimeoutMS?: number;
        zlibCompressionLevel?:
            | 0
            | 5
            | 1
            | 3
            | 9
            | 4
            | 2
            | 8
            | 7
            | 6;
    }

    Hierarchy (view full)

    Properties

    allowPartialTrustChain? +ALPNProtocols? +appName? +auth? +authMechanism? +authMechanismProperties? +authSource? +autoEncryption? +autoSelectFamily? +autoSelectFamilyAttemptTimeout? +bsonRegExp? +ca? +cert? +checkKeys? +checkServerIdentity? +ciphers? +compressors? +connectTimeoutMS? +crl? +directConnection? +driverInfo? +ecdhCurve? +enableUtf8Validation? +family? +fieldsAsRaw? +forceServerObjectId? +heartbeatFrequencyMS? +hints? +ignoreUndefined? +journal? +keepAliveInitialDelay? +key? +loadBalanced? +localAddress? +localPort? +localThresholdMS? +lookup? +maxConnecting? +maxIdleTimeMS? +maxPoolSize? +maxStalenessSeconds? +minDHSize? +minHeartbeatFrequencyMS? +minPoolSize? +mongodbLogComponentSeverities? +mongodbLogMaxDocumentLength? +mongodbLogPath? +monitorCommands? +noDelay? +passphrase? +pfx? +pkFactory? +promoteBuffers? +promoteLongs? +promoteValues? +proxyHost? +proxyPassword? +proxyPort? +proxyUsername? +raw? +readConcern? +readConcernLevel? +readPreference? +readPreferenceTags? +rejectUnauthorized? +replicaSet? +retryReads? +retryWrites? +secureContext? +secureProtocol? +serializeFunctions? +serverApi? +serverMonitoringMode? +servername? +serverSelectionTimeoutMS? +session? +socketTimeoutMS? +srvMaxHosts? +srvServiceName? +ssl? +timeoutMS? +tls? +tlsAllowInvalidCertificates? +tlsAllowInvalidHostnames? +tlsCAFile? +tlsCertificateKeyFile? +tlsCertificateKeyFilePassword? +tlsCRLFile? +tlsInsecure? +useBigInt64? +w? +waitQueueTimeoutMS? +writeConcern? +wtimeoutMS? +zlibCompressionLevel? +

    Properties

    allowPartialTrustChain?: boolean

    Treat intermediate (non-self-signed) +certificates in the trust CA certificate list as trusted.

    +

    v22.9.0, v20.18.0

    +
    ALPNProtocols?: Uint8Array | string[] | Uint8Array[]

    An array of strings or a Buffer naming possible ALPN protocols. +(Protocols should be ordered by their priority.)

    +
    appName?: string

    The name of the application that created this MongoClient instance. MongoDB 3.4 and newer will print this value in the server log upon establishing each connection. It is also recorded in the slow query log and profile collections

    +
    auth?: Auth

    The auth settings for when connection to server.

    +
    authMechanism?: AuthMechanism

    Specify the authentication mechanism that MongoDB will use to authenticate the connection.

    +
    authMechanismProperties?: AuthMechanismProperties

    Specify properties for the specified authMechanism as a comma-separated list of colon-separated key-value pairs.

    +
    authSource?: string

    Specify the database name associated with the user’s credentials.

    +
    autoEncryption?: AutoEncryptionOptions

    Optionally enable in-use auto encryption

    +

    Automatic encryption is an enterprise only feature that only applies to operations on a collection. Automatic encryption is not supported for operations on a database or view, and operations that are not bypassed will result in error +(see libmongocrypt: Auto Encryption Allow-List). To bypass automatic encryption for all operations, set bypassAutoEncryption=true in AutoEncryptionOpts.

    +

    Automatic encryption requires the authenticated user to have the listCollections privilege action.

    +

    If a MongoClient with a limited connection pool size (i.e a non-zero maxPoolSize) is configured with AutoEncryptionOptions, a separate internal MongoClient is created if any of the following are true:

    +
      +
    • AutoEncryptionOptions.keyVaultClient is not passed.
    • +
    • AutoEncryptionOptions.bypassAutomaticEncryption is false.
    • +
    +

    If an internal MongoClient is created, it is configured with the same options as the parent MongoClient except minPoolSize is set to 0 and AutoEncryptionOptions is omitted.

    +
    autoSelectFamily?: boolean

    v18.13.0

    +
    autoSelectFamilyAttemptTimeout?: number

    v18.13.0

    +
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    ca?: string | Buffer | (string | Buffer)[]

    Optionally override the trusted CA certificates. Default is to trust +the well-known CAs curated by Mozilla. Mozilla's CAs are completely +replaced when CAs are explicitly specified using this option.

    +
    cert?: string | Buffer | (string | Buffer)[]

    Cert chains in PEM format. One cert chain should be provided per +private key. Each cert chain should consist of the PEM formatted +certificate for a provided private key, followed by the PEM +formatted intermediate certificates (if any), in order, and not +including the root CA (the root CA must be pre-known to the peer, +see ca). When providing multiple cert chains, they do not have to +be in the same order as their private keys in key. If the +intermediate certificates are not provided, the peer will not be +able to validate the certificate, and the handshake will fail.

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined)

    Type declaration

      • (hostname, cert): Error | undefined
      • Verifies the certificate cert is issued to hostname.

        +

        Returns Error object, populating it with reason, host, and cert on +failure. On success, returns undefined.

        +

        This function is intended to be used in combination with thecheckServerIdentity option that can be passed to connect and as +such operates on a certificate object. For other purposes, consider using x509.checkHost() instead.

        +

        This function can be overwritten by providing an alternative function as the options.checkServerIdentity option that is passed to tls.connect(). The +overwriting function can call tls.checkServerIdentity() of course, to augment +the checks done with additional verification.

        +

        This function is only called if the certificate passed all other checks, such as +being issued by trusted CA (options.ca).

        +

        Earlier versions of Node.js incorrectly accepted certificates for a givenhostname if a matching uniformResourceIdentifier subject alternative name +was present (see CVE-2021-44531). Applications that wish to acceptuniformResourceIdentifier subject alternative names can use +a custom options.checkServerIdentity function that implements the desired behavior.

        +

        Parameters

        • hostname: string

          The host name or IP address to verify the certificate against.

          +
        • cert: PeerCertificate

          A certificate object representing the peer's certificate.

          +

        Returns Error | undefined

        v0.8.4

        +
    ciphers?: string

    Cipher suite specification, replacing the default. For more +information, see modifying the default cipher suite. Permitted +ciphers can be obtained via tls.getCiphers(). Cipher names must be +uppercased in order for OpenSSL to accept them.

    +
    compressors?: string | (
        | "none"
        | "snappy"
        | "zlib"
        | "zstd")[]

    An array or comma-delimited string of compressors to enable network compression for communication between this client and a mongod/mongos instance.

    +
    connectTimeoutMS?: number

    The time in milliseconds to attempt a connection before timing out.

    +
    crl?: string | Buffer | (string | Buffer)[]

    PEM formatted CRLs (Certificate Revocation Lists).

    +
    directConnection?: boolean

    Allow a driver to force a Single topology type with a connection string containing one host

    +
    driverInfo?: DriverInfo

    Allows a wrapping driver to amend the client metadata generated by the driver to include information about the wrapping driver

    +
    ecdhCurve?: string

    A string describing a named curve or a colon separated list of curve +NIDs or names, for example P-521:P-384:P-256, to use for ECDH key +agreement. Set to auto to select the curve automatically. Use +crypto.getCurves() to obtain a list of available curve names. On +recent releases, openssl ecparam -list_curves will also display the +name and description of each available elliptic curve. Default: +tls.DEFAULT_ECDH_CURVE.

    +
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +
    family?: number
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    forceServerObjectId?: boolean

    Force server to assign _id values instead of driver

    +
    heartbeatFrequencyMS?: number

    heartbeatFrequencyMS controls when the driver checks the state of the MongoDB deployment. Specify the interval (in milliseconds) between checks, counted from the end of the previous check until the beginning of the next one.

    +
    hints?: number
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    journal?: boolean

    The journal write concern

    +

    Please use the writeConcern option instead

    +
    keepAliveInitialDelay?: number

    Node.JS socket option to set the time the first keepalive probe is sent on an idle socket. Defaults to 120000ms

    +
    key?: string | Buffer | (string | Buffer | KeyObject)[]

    Private keys in PEM format. PEM allows the option of private keys +being encrypted. Encrypted keys will be decrypted with +options.passphrase. Multiple keys using different algorithms can be +provided either as an array of unencrypted key strings or buffers, +or an array of objects in the form {pem: <string|buffer>[, +passphrase: ]}. The object form can only occur in an array. +object.passphrase is optional. Encrypted keys will be decrypted with +object.passphrase if provided, or options.passphrase if it is not.

    +
    loadBalanced?: boolean

    Instruct the driver it is connecting to a load balancer fronting a mongos like service

    +
    localAddress?: string
    localPort?: number
    localThresholdMS?: number

    The size (in milliseconds) of the latency window for selecting among multiple suitable MongoDB instances.

    +
    lookup?: LookupFunction
    maxConnecting?: number

    The maximum number of connections that may be in the process of being established concurrently by the connection pool.

    +
    maxIdleTimeMS?: number

    The maximum number of milliseconds that a connection can remain idle in the pool before being removed and closed.

    +
    maxPoolSize?: number

    The maximum number of connections in the connection pool.

    +
    maxStalenessSeconds?: number

    Specifies, in seconds, how stale a secondary can be before the client stops using it for read operations.

    +
    minDHSize?: number
    minHeartbeatFrequencyMS?: number

    Sets the minimum heartbeat frequency. In the event that the driver has to frequently re-check a server's availability, it will wait at least this long since the previous check to avoid wasted effort.

    +
    minPoolSize?: number

    The minimum number of connections in the connection pool.

    +
    mongodbLogComponentSeverities?: LogComponentSeveritiesClientOptions

    Enable logging level per component or use default to control any unset components.

    +
    mongodbLogMaxDocumentLength?: number

    All BSON documents are stringified to EJSON. This controls the maximum length of those strings. +It is defaulted to 1000.

    +
    mongodbLogPath?: MongoDBLogWritable | "stdout" | "stderr"

    Specifies the destination of the driver's logging. The default is stderr.

    +
    monitorCommands?: boolean

    Enable command monitoring for this client

    +
    noDelay?: boolean

    TCP Connection no delay

    +
    passphrase?: string

    Shared passphrase used for a single private key and/or a PFX.

    +
    pfx?: string | Buffer | (string | Buffer | PxfObject)[]

    PFX or PKCS12 encoded private key and certificate chain. pfx is an +alternative to providing key and cert individually. PFX is usually +encrypted, if it is, passphrase will be used to decrypt it. Multiple +PFX can be provided either as an array of unencrypted PFX buffers, +or an array of objects in the form {buf: <string|buffer>[, +passphrase: ]}. The object form can only occur in an array. +object.passphrase is optional. Encrypted PFX will be decrypted with +object.passphrase if provided, or options.passphrase if it is not.

    +
    pkFactory?: PkFactory

    A primary key factory function for generation of custom _id keys

    +
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    proxyHost?: string

    Configures a Socks5 proxy host used for creating TCP connections.

    +
    proxyPassword?: string

    Configures a Socks5 proxy password when the proxy in proxyHost requires username/password authentication.

    +
    proxyPort?: number

    Configures a Socks5 proxy port used for creating TCP connections.

    +
    proxyUsername?: string

    Configures a Socks5 proxy username when the proxy in proxyHost requires username/password authentication.

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern for the collection (only MongoDB 3.2 or higher supported)

    +
    readConcernLevel?: ReadConcernLevel

    The level of isolation

    +

    Specifies the read preferences for this connection

    +
    readPreferenceTags?: TagSet[]

    Specifies the tags document as a comma-separated list of colon-separated key-value pairs.

    +
    rejectUnauthorized?: boolean

    If true the server will reject any connection which is not +authorized with the list of supplied CAs. This option only has an +effect if requestCert is true.

    +
    true
    +
    + +
    replicaSet?: string

    Specifies the name of the replica set, if the mongod is a member of a replica set.

    +
    retryReads?: boolean

    Enables retryable reads.

    +
    retryWrites?: boolean

    Enable retryable writes.

    +
    secureContext?: SecureContext

    An optional TLS context object from tls.createSecureContext()

    +
    secureProtocol?: string

    Legacy mechanism to select the TLS protocol version to use, it does +not support independent control of the minimum and maximum version, +and does not support limiting the protocol to TLSv1.3. Use +minVersion and maxVersion instead. The possible values are listed as +SSL_METHODS, use the function names as strings. For example, use +'TLSv1_1_method' to force TLS version 1.1, or 'TLS_method' to allow +any TLS protocol version up to TLSv1.3. It is not recommended to use +TLS versions less than 1.2, but it may be required for +interoperability. Default: none, see minVersion.

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    serverApi?: "1" | ServerApi

    Server API version

    +
    serverMonitoringMode?: ServerMonitoringMode

    Instructs the driver monitors to use a specific monitoring mode

    +
    servername?: string
    serverSelectionTimeoutMS?: number

    Specifies how long (in milliseconds) to block for server selection before throwing an exception.

    +
    session?: Buffer

    An optional Buffer instance containing a TLS session.

    +
    socketTimeoutMS?: number

    The time in milliseconds to attempt a send or receive on a socket before the attempt times out.

    +
    srvMaxHosts?: number

    The maximum number of hosts to connect to when using an srv connection string, a setting of 0 means unlimited hosts

    +
    srvServiceName?: string

    Modifies the srv URI to look like:

    +

    _{srvServiceName}._tcp.{hostname}.{domainname}

    +

    Querying this DNS URI is expected to respond with SRV records

    +
    ssl?: boolean

    A boolean to enable or disables TLS/SSL for the connection. (The ssl option is equivalent to the tls option.)

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    tls?: boolean

    Enables or disables TLS/SSL for the connection.

    +
    tlsAllowInvalidCertificates?: boolean

    Bypasses validation of the certificates presented by the mongod/mongos instance

    +
    tlsAllowInvalidHostnames?: boolean

    Disables hostname validation of the certificate presented by the mongod/mongos instance.

    +
    tlsCAFile?: string

    Specifies the location of a local .pem file that contains the root certificate chain from the Certificate Authority. This file is used to validate the certificate presented by the mongod/mongos instance.

    +
    tlsCertificateKeyFile?: string

    Specifies the location of a local .pem file that contains either the client's TLS/SSL certificate and key.

    +
    tlsCertificateKeyFilePassword?: string

    Specifies the password to de-crypt the tlsCertificateKeyFile.

    +
    tlsCRLFile?: string

    Specifies the location of a local CRL .pem file that contains the client revokation list.

    +
    tlsInsecure?: boolean

    Disables various certificate validations.

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    w?: W

    The write concern w value

    +

    Please use the writeConcern option instead

    +
    waitQueueTimeoutMS?: number

    The maximum time in milliseconds that a thread can wait for a connection to become available.

    +

    A MongoDB WriteConcern, which describes the level of acknowledgement +requested from MongoDB for write operations.

    +
    wtimeoutMS?: number

    The write concern timeout

    +

    Please use the writeConcern option instead

    +
    zlibCompressionLevel?:
        | 0
        | 5
        | 1
        | 3
        | 9
        | 4
        | 2
        | 8
        | 7
        | 6

    An integer that specifies the compression level if using zlib for network compression.

    +
    diff --git a/docs/6.16/interfaces/MongoCredentialsOptions.html b/docs/6.16/interfaces/MongoCredentialsOptions.html new file mode 100644 index 00000000000..618545fd1cd --- /dev/null +++ b/docs/6.16/interfaces/MongoCredentialsOptions.html @@ -0,0 +1,7 @@ +MongoCredentialsOptions | mongodb

    Interface MongoCredentialsOptions

    interface MongoCredentialsOptions {
        db?: string;
        mechanism?: AuthMechanism;
        mechanismProperties: AuthMechanismProperties;
        password: string;
        source: string;
        username?: string;
    }

    Properties

    db?: string
    mechanism?: AuthMechanism
    mechanismProperties: AuthMechanismProperties
    password: string
    source: string
    username?: string
    diff --git a/docs/6.16/interfaces/MongoDBLogWritable.html b/docs/6.16/interfaces/MongoDBLogWritable.html new file mode 100644 index 00000000000..1708d3e8ffe --- /dev/null +++ b/docs/6.16/interfaces/MongoDBLogWritable.html @@ -0,0 +1,18 @@ +MongoDBLogWritable | mongodb

    Interface MongoDBLogWritable

    A custom destination for structured logging messages.

    +
    interface MongoDBLogWritable {
        write(log: Log): unknown;
    }

    Methods

    Methods

    • This function will be called for every enabled log message.

      +

      It can be sync or async:

      +
        +
      • If it is synchronous it will block the driver from proceeding until this method returns.
      • +
      • If it is asynchronous the driver will not await the returned promise. It will attach fulfillment handling (.then). +If the promise rejects the logger will write an error message to stderr and stop functioning. +If the promise resolves the driver proceeds to the next log message (or waits for new ones to occur).
      • +
      +

      Tips:

      +
        +
      • We recommend writing an async write function that never rejects. +Instead handle logging errors as necessary to your use case and make the write function a noop, until it can be recovered.
      • +
      • The Log messages are structured but subject to change since the intended purpose is informational. +Program against this defensively and err on the side of stringifying whatever is passed in to write in some form or another.
      • +
      +

      Parameters

      Returns unknown

    diff --git a/docs/6.16/interfaces/MongoNetworkErrorOptions.html b/docs/6.16/interfaces/MongoNetworkErrorOptions.html new file mode 100644 index 00000000000..da6a452d7da --- /dev/null +++ b/docs/6.16/interfaces/MongoNetworkErrorOptions.html @@ -0,0 +1,4 @@ +MongoNetworkErrorOptions | mongodb

    Interface MongoNetworkErrorOptions

    interface MongoNetworkErrorOptions {
        beforeHandshake?: boolean;
        cause?: Error;
    }

    Properties

    beforeHandshake?: boolean

    Indicates the timeout happened before a connection handshake completed

    +
    cause?: Error
    diff --git a/docs/6.16/interfaces/MongoOptions.html b/docs/6.16/interfaces/MongoOptions.html new file mode 100644 index 00000000000..d6b03fff6d3 --- /dev/null +++ b/docs/6.16/interfaces/MongoOptions.html @@ -0,0 +1,283 @@ +MongoOptions | mongodb

    Interface MongoOptions

    Parsed Mongo Client Options.

    +

    User supplied options are documented by MongoClientOptions.

    +

    NOTE: The client's options parsing is subject to change to support new features. +This type is provided to aid with inspection of options after parsing, it should not be relied upon programmatically.

    +

    Options are sourced from:

    +
      +
    • connection string
    • +
    • options object passed to the MongoClient constructor
    • +
    • file system (ex. tls settings)
    • +
    • environment variables
    • +
    • DNS SRV records and TXT records
    • +
    +

    Not all options may be present after client construction as some are obtained from asynchronous operations.

    +
    interface MongoOptions {
        allowPartialTrustChain?: boolean;
        ALPNProtocols?: Uint8Array | string[] | Uint8Array[];
        appName?: string;
        autoEncryption: AutoEncryptionOptions;
        autoSelectFamily?: boolean;
        autoSelectFamilyAttemptTimeout?: number;
        ca?: string | Buffer | (string | Buffer)[];
        cert?: string | Buffer | (string | Buffer)[];
        checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined);
        ciphers?: string;
        compressors: (
            | "none"
            | "snappy"
            | "zlib"
            | "zstd")[];
        connectTimeoutMS: number;
        credentials?: MongoCredentials;
        crl?: string | Buffer | (string | Buffer)[];
        dbName: string;
        directConnection: boolean;
        driverInfo: DriverInfo;
        ecdhCurve?: string;
        family?: number;
        forceServerObjectId: boolean;
        heartbeatFrequencyMS: number;
        hints?: number;
        hosts: HostAddress[];
        keepAliveInitialDelay?: number;
        key?: string | Buffer | (string | Buffer | KeyObject)[];
        loadBalanced: boolean;
        localAddress?: string;
        localPort?: number;
        localThresholdMS: number;
        lookup?: LookupFunction;
        maxConnecting: number;
        maxIdleTimeMS: number;
        maxPoolSize: number;
        metadata: ClientMetadata;
        minDHSize?: number;
        minHeartbeatFrequencyMS: number;
        minPoolSize: number;
        monitorCommands: boolean;
        noDelay: boolean;
        passphrase?: string;
        pfx?: string | Buffer | (string | Buffer | PxfObject)[];
        pkFactory: PkFactory;
        proxyHost?: string;
        proxyPassword?: string;
        proxyPort?: number;
        proxyUsername?: string;
        raw: boolean;
        readConcern: ReadConcern;
        readPreference: ReadPreference;
        rejectUnauthorized?: boolean;
        replicaSet: string;
        retryReads: boolean;
        retryWrites: boolean;
        secureContext?: SecureContext;
        secureProtocol?: string;
        serverApi: ServerApi;
        serverMonitoringMode: ServerMonitoringMode;
        servername?: string;
        serverSelectionTimeoutMS: number;
        session?: Buffer;
        socketTimeoutMS: number;
        srvHost?: string;
        srvMaxHosts: number;
        srvServiceName: string;
        timeoutMS?: number;
        tls: boolean;
        tlsAllowInvalidCertificates: boolean;
        tlsAllowInvalidHostnames: boolean;
        tlsCAFile?: string;
        tlsCertificateKeyFile?: string;
        tlsCRLFile?: string;
        tlsInsecure: boolean;
        waitQueueTimeoutMS: number;
        writeConcern: WriteConcern;
        zlibCompressionLevel:
            | 0
            | 1
            | 2
            | 3
            | 4
            | 5
            | 6
            | 7
            | 8
            | 9;
    }

    Hierarchy (view full)

    • Required<Pick<MongoClientOptions,
          | "autoEncryption"
          | "connectTimeoutMS"
          | "directConnection"
          | "driverInfo"
          | "forceServerObjectId"
          | "minHeartbeatFrequencyMS"
          | "heartbeatFrequencyMS"
          | "localThresholdMS"
          | "maxConnecting"
          | "maxIdleTimeMS"
          | "maxPoolSize"
          | "minPoolSize"
          | "monitorCommands"
          | "noDelay"
          | "pkFactory"
          | "raw"
          | "replicaSet"
          | "retryReads"
          | "retryWrites"
          | "serverSelectionTimeoutMS"
          | "socketTimeoutMS"
          | "srvMaxHosts"
          | "srvServiceName"
          | "tlsAllowInvalidCertificates"
          | "tlsAllowInvalidHostnames"
          | "tlsInsecure"
          | "waitQueueTimeoutMS"
          | "zlibCompressionLevel">>
    • SupportedNodeConnectionOptions
      • MongoOptions

    Properties

    allowPartialTrustChain?: boolean

    Treat intermediate (non-self-signed) +certificates in the trust CA certificate list as trusted.

    +

    v22.9.0, v20.18.0

    +
    ALPNProtocols?: Uint8Array | string[] | Uint8Array[]

    An array of strings or a Buffer naming possible ALPN protocols. +(Protocols should be ordered by their priority.)

    +
    appName?: string
    autoEncryption: AutoEncryptionOptions

    Optionally enable in-use auto encryption

    +

    Automatic encryption is an enterprise only feature that only applies to operations on a collection. Automatic encryption is not supported for operations on a database or view, and operations that are not bypassed will result in error +(see libmongocrypt: Auto Encryption Allow-List). To bypass automatic encryption for all operations, set bypassAutoEncryption=true in AutoEncryptionOpts.

    +

    Automatic encryption requires the authenticated user to have the listCollections privilege action.

    +

    If a MongoClient with a limited connection pool size (i.e a non-zero maxPoolSize) is configured with AutoEncryptionOptions, a separate internal MongoClient is created if any of the following are true:

    +
      +
    • AutoEncryptionOptions.keyVaultClient is not passed.
    • +
    • AutoEncryptionOptions.bypassAutomaticEncryption is false.
    • +
    +

    If an internal MongoClient is created, it is configured with the same options as the parent MongoClient except minPoolSize is set to 0 and AutoEncryptionOptions is omitted.

    +
    autoSelectFamily?: boolean

    v18.13.0

    +
    autoSelectFamilyAttemptTimeout?: number

    v18.13.0

    +
    ca?: string | Buffer | (string | Buffer)[]

    Optionally override the trusted CA certificates. Default is to trust +the well-known CAs curated by Mozilla. Mozilla's CAs are completely +replaced when CAs are explicitly specified using this option.

    +
    cert?: string | Buffer | (string | Buffer)[]

    Cert chains in PEM format. One cert chain should be provided per +private key. Each cert chain should consist of the PEM formatted +certificate for a provided private key, followed by the PEM +formatted intermediate certificates (if any), in order, and not +including the root CA (the root CA must be pre-known to the peer, +see ca). When providing multiple cert chains, they do not have to +be in the same order as their private keys in key. If the +intermediate certificates are not provided, the peer will not be +able to validate the certificate, and the handshake will fail.

    +
    checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined)

    Type declaration

      • (hostname, cert): Error | undefined
      • Verifies the certificate cert is issued to hostname.

        +

        Returns Error object, populating it with reason, host, and cert on +failure. On success, returns undefined.

        +

        This function is intended to be used in combination with thecheckServerIdentity option that can be passed to connect and as +such operates on a certificate object. For other purposes, consider using x509.checkHost() instead.

        +

        This function can be overwritten by providing an alternative function as the options.checkServerIdentity option that is passed to tls.connect(). The +overwriting function can call tls.checkServerIdentity() of course, to augment +the checks done with additional verification.

        +

        This function is only called if the certificate passed all other checks, such as +being issued by trusted CA (options.ca).

        +

        Earlier versions of Node.js incorrectly accepted certificates for a givenhostname if a matching uniformResourceIdentifier subject alternative name +was present (see CVE-2021-44531). Applications that wish to acceptuniformResourceIdentifier subject alternative names can use +a custom options.checkServerIdentity function that implements the desired behavior.

        +

        Parameters

        • hostname: string

          The host name or IP address to verify the certificate against.

          +
        • cert: PeerCertificate

          A certificate object representing the peer's certificate.

          +

        Returns Error | undefined

        v0.8.4

        +
    ciphers?: string

    Cipher suite specification, replacing the default. For more +information, see modifying the default cipher suite. Permitted +ciphers can be obtained via tls.getCiphers(). Cipher names must be +uppercased in order for OpenSSL to accept them.

    +
    compressors: (
        | "none"
        | "snappy"
        | "zlib"
        | "zstd")[]
    connectTimeoutMS: number

    The time in milliseconds to attempt a connection before timing out.

    +
    credentials?: MongoCredentials
    crl?: string | Buffer | (string | Buffer)[]

    PEM formatted CRLs (Certificate Revocation Lists).

    +
    dbName: string
    directConnection: boolean

    Allow a driver to force a Single topology type with a connection string containing one host

    +
    driverInfo: DriverInfo

    Allows a wrapping driver to amend the client metadata generated by the driver to include information about the wrapping driver

    +
    ecdhCurve?: string

    A string describing a named curve or a colon separated list of curve +NIDs or names, for example P-521:P-384:P-256, to use for ECDH key +agreement. Set to auto to select the curve automatically. Use +crypto.getCurves() to obtain a list of available curve names. On +recent releases, openssl ecparam -list_curves will also display the +name and description of each available elliptic curve. Default: +tls.DEFAULT_ECDH_CURVE.

    +
    family?: number
    forceServerObjectId: boolean

    Force server to assign _id values instead of driver

    +
    heartbeatFrequencyMS: number

    heartbeatFrequencyMS controls when the driver checks the state of the MongoDB deployment. Specify the interval (in milliseconds) between checks, counted from the end of the previous check until the beginning of the next one.

    +
    hints?: number
    hosts: HostAddress[]
    keepAliveInitialDelay?: number

    Node.JS socket option to set the time the first keepalive probe is sent on an idle socket. Defaults to 120000ms

    +
    key?: string | Buffer | (string | Buffer | KeyObject)[]

    Private keys in PEM format. PEM allows the option of private keys +being encrypted. Encrypted keys will be decrypted with +options.passphrase. Multiple keys using different algorithms can be +provided either as an array of unencrypted key strings or buffers, +or an array of objects in the form {pem: <string|buffer>[, +passphrase: ]}. The object form can only occur in an array. +object.passphrase is optional. Encrypted keys will be decrypted with +object.passphrase if provided, or options.passphrase if it is not.

    +
    loadBalanced: boolean
    localAddress?: string
    localPort?: number
    localThresholdMS: number

    The size (in milliseconds) of the latency window for selecting among multiple suitable MongoDB instances.

    +
    lookup?: LookupFunction
    maxConnecting: number

    The maximum number of connections that may be in the process of being established concurrently by the connection pool.

    +
    maxIdleTimeMS: number

    The maximum number of milliseconds that a connection can remain idle in the pool before being removed and closed.

    +
    maxPoolSize: number

    The maximum number of connections in the connection pool.

    +
    metadata: ClientMetadata
    minDHSize?: number
    minHeartbeatFrequencyMS: number

    Sets the minimum heartbeat frequency. In the event that the driver has to frequently re-check a server's availability, it will wait at least this long since the previous check to avoid wasted effort.

    +
    minPoolSize: number

    The minimum number of connections in the connection pool.

    +
    monitorCommands: boolean

    Enable command monitoring for this client

    +
    noDelay: boolean

    TCP Connection no delay

    +
    passphrase?: string

    Shared passphrase used for a single private key and/or a PFX.

    +
    pfx?: string | Buffer | (string | Buffer | PxfObject)[]

    PFX or PKCS12 encoded private key and certificate chain. pfx is an +alternative to providing key and cert individually. PFX is usually +encrypted, if it is, passphrase will be used to decrypt it. Multiple +PFX can be provided either as an array of unencrypted PFX buffers, +or an array of objects in the form {buf: <string|buffer>[, +passphrase: ]}. The object form can only occur in an array. +object.passphrase is optional. Encrypted PFX will be decrypted with +object.passphrase if provided, or options.passphrase if it is not.

    +
    pkFactory: PkFactory

    A primary key factory function for generation of custom _id keys

    +
    proxyHost?: string
    proxyPassword?: string
    proxyPort?: number
    proxyUsername?: string
    raw: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern: ReadConcern
    readPreference: ReadPreference
    rejectUnauthorized?: boolean

    If true the server will reject any connection which is not +authorized with the list of supplied CAs. This option only has an +effect if requestCert is true.

    +
    true
    +
    + +
    replicaSet: string

    Specifies the name of the replica set, if the mongod is a member of a replica set.

    +
    retryReads: boolean

    Enables retryable reads.

    +
    retryWrites: boolean

    Enable retryable writes.

    +
    secureContext?: SecureContext

    An optional TLS context object from tls.createSecureContext()

    +
    secureProtocol?: string

    Legacy mechanism to select the TLS protocol version to use, it does +not support independent control of the minimum and maximum version, +and does not support limiting the protocol to TLSv1.3. Use +minVersion and maxVersion instead. The possible values are listed as +SSL_METHODS, use the function names as strings. For example, use +'TLSv1_1_method' to force TLS version 1.1, or 'TLS_method' to allow +any TLS protocol version up to TLSv1.3. It is not recommended to use +TLS versions less than 1.2, but it may be required for +interoperability. Default: none, see minVersion.

    +
    serverApi: ServerApi
    serverMonitoringMode: ServerMonitoringMode
    servername?: string
    serverSelectionTimeoutMS: number

    Specifies how long (in milliseconds) to block for server selection before throwing an exception.

    +
    session?: Buffer

    An optional Buffer instance containing a TLS session.

    +
    socketTimeoutMS: number

    The time in milliseconds to attempt a send or receive on a socket before the attempt times out.

    +
    srvHost?: string
    srvMaxHosts: number

    The maximum number of hosts to connect to when using an srv connection string, a setting of 0 means unlimited hosts

    +
    srvServiceName: string

    Modifies the srv URI to look like:

    +

    _{srvServiceName}._tcp.{hostname}.{domainname}

    +

    Querying this DNS URI is expected to respond with SRV records

    +
    timeoutMS?: number
    tls: boolean

    NOTE ABOUT TLS Options

    If tls is provided as an option, it is equivalent to setting the ssl option.

    +

    NodeJS native TLS options are passed through to the socket and retain their original types.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    nodejs native optiondriver spec equivalent option namedriver option type
    catlsCAFilestring
    crltlsCRLFilestring
    certtlsCertificateKeyFilestring
    keytlsCertificateKeyFilestring
    passphrasetlsCertificateKeyFilePasswordstring
    rejectUnauthorizedtlsAllowInvalidCertificatesboolean
    checkServerIdentitytlsAllowInvalidHostnamesboolean
    see note belowtlsInsecureboolean
    +

    If tlsInsecure is set to true, then it will set the node native options checkServerIdentity +to a no-op and rejectUnauthorized to false.

    +

    If tlsInsecure is set to false, then it will set the node native options checkServerIdentity +to a no-op and rejectUnauthorized to the inverse value of tlsAllowInvalidCertificates. If +tlsAllowInvalidCertificates is not set, then rejectUnauthorized will be set to true.

    +

    The files specified by the paths passed in to the tlsCAFile, tlsCertificateKeyFile and tlsCRLFile +fields are read lazily on the first call to MongoClient.connect. Once these files have been read and +the ca, cert, crl and key fields are populated, they will not be read again on subsequent calls to +MongoClient.connect. As a result, until the first call to MongoClient.connect, the ca, +cert, crl and key fields will be undefined.

    +
    tlsAllowInvalidCertificates: boolean

    Bypasses validation of the certificates presented by the mongod/mongos instance

    +
    tlsAllowInvalidHostnames: boolean

    Disables hostname validation of the certificate presented by the mongod/mongos instance.

    +
    tlsCAFile?: string
    tlsCertificateKeyFile?: string
    tlsCRLFile?: string
    tlsInsecure: boolean

    Disables various certificate validations.

    +
    waitQueueTimeoutMS: number

    The maximum time in milliseconds that a thread can wait for a connection to become available.

    +
    writeConcern: WriteConcern
    zlibCompressionLevel:
        | 0
        | 1
        | 2
        | 3
        | 4
        | 5
        | 6
        | 7
        | 8
        | 9

    An integer that specifies the compression level if using zlib for network compression.

    +
    diff --git a/docs/6.16/interfaces/MonitorOptions.html b/docs/6.16/interfaces/MonitorOptions.html new file mode 100644 index 00000000000..4c250883cbf --- /dev/null +++ b/docs/6.16/interfaces/MonitorOptions.html @@ -0,0 +1,127 @@ +MonitorOptions | mongodb

    Interface MonitorOptions

    interface MonitorOptions {
        allowPartialTrustChain?: boolean;
        ALPNProtocols?: Uint8Array | string[] | Uint8Array[];
        autoSelectFamily?: boolean;
        autoSelectFamilyAttemptTimeout?: number;
        ca?: string | Buffer | (string | Buffer)[];
        cancellationToken?: CancellationToken;
        cert?: string | Buffer | (string | Buffer)[];
        checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined);
        ciphers?: string;
        compressors?: (
            | "none"
            | "snappy"
            | "zlib"
            | "zstd")[];
        connectTimeoutMS: number;
        credentials?: MongoCredentials;
        crl?: string | Buffer | (string | Buffer)[];
        ecdhCurve?: string;
        family?: number;
        heartbeatFrequencyMS: number;
        hints?: number;
        keepAliveInitialDelay?: number;
        key?: string | Buffer | (string | Buffer | KeyObject)[];
        loadBalanced: boolean;
        localAddress?: string;
        localPort?: number;
        logicalSessionTimeoutMinutes?: number;
        lookup?: LookupFunction;
        metadata: ClientMetadata;
        minDHSize?: number;
        minHeartbeatFrequencyMS: number;
        monitorCommands: boolean;
        noDelay?: boolean;
        passphrase?: string;
        pfx?: string | Buffer | (string | Buffer | PxfObject)[];
        proxyHost?: string;
        proxyPassword?: string;
        proxyPort?: number;
        proxyUsername?: string;
        rejectUnauthorized?: boolean;
        secureContext?: SecureContext;
        secureProtocol?: string;
        serverApi?: ServerApi;
        serverMonitoringMode: ServerMonitoringMode;
        servername?: string;
        session?: Buffer;
        socketTimeoutMS?: number;
        tls: boolean;
    }

    Hierarchy

    Properties

    allowPartialTrustChain?: boolean

    Treat intermediate (non-self-signed) +certificates in the trust CA certificate list as trusted.

    +

    v22.9.0, v20.18.0

    +
    ALPNProtocols?: Uint8Array | string[] | Uint8Array[]

    An array of strings or a Buffer naming possible ALPN protocols. +(Protocols should be ordered by their priority.)

    +
    autoSelectFamily?: boolean

    v18.13.0

    +
    autoSelectFamilyAttemptTimeout?: number

    v18.13.0

    +
    ca?: string | Buffer | (string | Buffer)[]

    Optionally override the trusted CA certificates. Default is to trust +the well-known CAs curated by Mozilla. Mozilla's CAs are completely +replaced when CAs are explicitly specified using this option.

    +
    cancellationToken?: CancellationToken
    cert?: string | Buffer | (string | Buffer)[]

    Cert chains in PEM format. One cert chain should be provided per +private key. Each cert chain should consist of the PEM formatted +certificate for a provided private key, followed by the PEM +formatted intermediate certificates (if any), in order, and not +including the root CA (the root CA must be pre-known to the peer, +see ca). When providing multiple cert chains, they do not have to +be in the same order as their private keys in key. If the +intermediate certificates are not provided, the peer will not be +able to validate the certificate, and the handshake will fail.

    +
    checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined)

    Type declaration

      • (hostname, cert): Error | undefined
      • Verifies the certificate cert is issued to hostname.

        +

        Returns Error object, populating it with reason, host, and cert on +failure. On success, returns undefined.

        +

        This function is intended to be used in combination with thecheckServerIdentity option that can be passed to connect and as +such operates on a certificate object. For other purposes, consider using x509.checkHost() instead.

        +

        This function can be overwritten by providing an alternative function as the options.checkServerIdentity option that is passed to tls.connect(). The +overwriting function can call tls.checkServerIdentity() of course, to augment +the checks done with additional verification.

        +

        This function is only called if the certificate passed all other checks, such as +being issued by trusted CA (options.ca).

        +

        Earlier versions of Node.js incorrectly accepted certificates for a givenhostname if a matching uniformResourceIdentifier subject alternative name +was present (see CVE-2021-44531). Applications that wish to acceptuniformResourceIdentifier subject alternative names can use +a custom options.checkServerIdentity function that implements the desired behavior.

        +

        Parameters

        • hostname: string

          The host name or IP address to verify the certificate against.

          +
        • cert: PeerCertificate

          A certificate object representing the peer's certificate.

          +

        Returns Error | undefined

        v0.8.4

        +
    ciphers?: string

    Cipher suite specification, replacing the default. For more +information, see modifying the default cipher suite. Permitted +ciphers can be obtained via tls.getCiphers(). Cipher names must be +uppercased in order for OpenSSL to accept them.

    +
    compressors?: (
        | "none"
        | "snappy"
        | "zlib"
        | "zstd")[]
    connectTimeoutMS: number
    credentials?: MongoCredentials
    crl?: string | Buffer | (string | Buffer)[]

    PEM formatted CRLs (Certificate Revocation Lists).

    +
    ecdhCurve?: string

    A string describing a named curve or a colon separated list of curve +NIDs or names, for example P-521:P-384:P-256, to use for ECDH key +agreement. Set to auto to select the curve automatically. Use +crypto.getCurves() to obtain a list of available curve names. On +recent releases, openssl ecparam -list_curves will also display the +name and description of each available elliptic curve. Default: +tls.DEFAULT_ECDH_CURVE.

    +
    family?: number
    heartbeatFrequencyMS: number
    hints?: number
    keepAliveInitialDelay?: number

    Node.JS socket option to set the time the first keepalive probe is sent on an idle socket. Defaults to 120000ms

    +
    key?: string | Buffer | (string | Buffer | KeyObject)[]

    Private keys in PEM format. PEM allows the option of private keys +being encrypted. Encrypted keys will be decrypted with +options.passphrase. Multiple keys using different algorithms can be +provided either as an array of unencrypted key strings or buffers, +or an array of objects in the form {pem: <string|buffer>[, +passphrase: ]}. The object form can only occur in an array. +object.passphrase is optional. Encrypted keys will be decrypted with +object.passphrase if provided, or options.passphrase if it is not.

    +
    loadBalanced: boolean
    localAddress?: string
    localPort?: number
    logicalSessionTimeoutMinutes?: number
    lookup?: LookupFunction
    metadata: ClientMetadata
    minDHSize?: number
    minHeartbeatFrequencyMS: number
    monitorCommands: boolean
    noDelay?: boolean
    passphrase?: string

    Shared passphrase used for a single private key and/or a PFX.

    +
    pfx?: string | Buffer | (string | Buffer | PxfObject)[]

    PFX or PKCS12 encoded private key and certificate chain. pfx is an +alternative to providing key and cert individually. PFX is usually +encrypted, if it is, passphrase will be used to decrypt it. Multiple +PFX can be provided either as an array of unencrypted PFX buffers, +or an array of objects in the form {buf: <string|buffer>[, +passphrase: ]}. The object form can only occur in an array. +object.passphrase is optional. Encrypted PFX will be decrypted with +object.passphrase if provided, or options.passphrase if it is not.

    +
    proxyHost?: string
    proxyPassword?: string
    proxyPort?: number
    proxyUsername?: string
    rejectUnauthorized?: boolean

    If true the server will reject any connection which is not +authorized with the list of supplied CAs. This option only has an +effect if requestCert is true.

    +
    true
    +
    + +
    secureContext?: SecureContext

    An optional TLS context object from tls.createSecureContext()

    +
    secureProtocol?: string

    Legacy mechanism to select the TLS protocol version to use, it does +not support independent control of the minimum and maximum version, +and does not support limiting the protocol to TLSv1.3. Use +minVersion and maxVersion instead. The possible values are listed as +SSL_METHODS, use the function names as strings. For example, use +'TLSv1_1_method' to force TLS version 1.1, or 'TLS_method' to allow +any TLS protocol version up to TLSv1.3. It is not recommended to use +TLS versions less than 1.2, but it may be required for +interoperability. Default: none, see minVersion.

    +
    serverApi?: ServerApi
    serverMonitoringMode: ServerMonitoringMode
    servername?: string
    session?: Buffer

    An optional Buffer instance containing a TLS session.

    +
    socketTimeoutMS?: number
    tls: boolean
    diff --git a/docs/6.16/interfaces/OIDCCallbackParams.html b/docs/6.16/interfaces/OIDCCallbackParams.html new file mode 100644 index 00000000000..4d78e871094 --- /dev/null +++ b/docs/6.16/interfaces/OIDCCallbackParams.html @@ -0,0 +1,16 @@ +OIDCCallbackParams | mongodb

    Interface OIDCCallbackParams

    The parameters that the driver provides to the user supplied +human or machine callback.

    +

    The version number is used to communicate callback API changes that are not breaking but that +users may want to know about and review their implementation. Users may wish to check the version +number and throw an error if their expected version number and the one provided do not match.

    +
    interface OIDCCallbackParams {
        idpInfo?: IdPInfo;
        refreshToken?: string;
        timeoutContext: AbortSignal;
        username?: string;
        version: 1;
    }

    Properties

    idpInfo?: IdPInfo

    The IdP information returned from the server.

    +
    refreshToken?: string

    The refresh token, if applicable, to be used by the callback to request a new token from the issuer.

    +
    timeoutContext: AbortSignal

    The context in which to timeout the OIDC callback.

    +
    username?: string

    Optional username.

    +
    version: 1

    The current OIDC API version.

    +
    diff --git a/docs/6.16/interfaces/OIDCResponse.html b/docs/6.16/interfaces/OIDCResponse.html new file mode 100644 index 00000000000..1d149dbff8d --- /dev/null +++ b/docs/6.16/interfaces/OIDCResponse.html @@ -0,0 +1,9 @@ +OIDCResponse | mongodb

    Interface OIDCResponse

    The response required to be returned from the machine or +human callback workflows' callback.

    +
    interface OIDCResponse {
        accessToken: string;
        expiresInSeconds?: number;
        refreshToken?: string;
    }

    Properties

    accessToken: string

    The OIDC access token.

    +
    expiresInSeconds?: number

    The time when the access token expires. For future use.

    +
    refreshToken?: string

    The refresh token, if applicable, to be used by the callback to request a new token from the issuer.

    +
    diff --git a/docs/6.16/interfaces/OperationOptions.html b/docs/6.16/interfaces/OperationOptions.html new file mode 100644 index 00000000000..23fd02755ff --- /dev/null +++ b/docs/6.16/interfaces/OperationOptions.html @@ -0,0 +1,51 @@ +OperationOptions | mongodb

    Interface OperationOptions

    interface OperationOptions {
        bsonRegExp?: boolean;
        checkKeys?: boolean;
        enableUtf8Validation?: boolean;
        fieldsAsRaw?: Document;
        ignoreUndefined?: boolean;
        omitReadPreference?: boolean;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readPreference?: ReadPreferenceLike;
        serializeFunctions?: boolean;
        session?: ClientSession;
        timeoutMS?: number;
        useBigInt64?: boolean;
        willRetryWrite?: boolean;
    }

    Hierarchy (view full)

    Properties

    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    omitReadPreference?: boolean
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest).

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    willRetryWrite?: boolean
    diff --git a/docs/6.16/interfaces/PkFactory.html b/docs/6.16/interfaces/PkFactory.html new file mode 100644 index 00000000000..c99582c57d7 --- /dev/null +++ b/docs/6.16/interfaces/PkFactory.html @@ -0,0 +1,2 @@ +PkFactory | mongodb

    Interface PkFactory

    interface PkFactory {
        createPk(): any;
    }

    Methods

    Methods

    diff --git a/docs/6.16/interfaces/ProxyOptions.html b/docs/6.16/interfaces/ProxyOptions.html new file mode 100644 index 00000000000..1e63b7d3021 --- /dev/null +++ b/docs/6.16/interfaces/ProxyOptions.html @@ -0,0 +1,5 @@ +ProxyOptions | mongodb

    Interface ProxyOptions

    interface ProxyOptions {
        proxyHost?: string;
        proxyPassword?: string;
        proxyPort?: number;
        proxyUsername?: string;
    }

    Hierarchy (view full)

    Properties

    proxyHost?: string
    proxyPassword?: string
    proxyPort?: number
    proxyUsername?: string
    diff --git a/docs/6.16/interfaces/RangeOptions.html b/docs/6.16/interfaces/RangeOptions.html new file mode 100644 index 00000000000..3c4f5538505 --- /dev/null +++ b/docs/6.16/interfaces/RangeOptions.html @@ -0,0 +1,13 @@ +RangeOptions | mongodb

    Interface RangeOptions

    RangeOptions specifies index options for a Queryable Encryption field supporting "range" queries. +min, max, sparsity, trimFactor and range must match the values set in the encryptedFields of the destination collection. +For double and decimal128, min/max/precision must all be set, or all be unset.

    +
    interface RangeOptions {
        max?: any;
        min?: any;
        precision?: number;
        sparsity?: bigint | Long;
        trimFactor?: number | Int32;
    }

    Properties

    max?: any

    max is the minimum value for the encrypted index. Required if precision is set.

    +
    min?: any

    min is the minimum value for the encrypted index. Required if precision is set.

    +
    precision?: number
    sparsity?: bigint | Long

    sparsity may be used to tune performance. must be non-negative. When omitted, a default value is used.

    +
    trimFactor?: number | Int32

    trimFactor may be used to tune performance. must be non-negative. When omitted, a default value is used.

    +
    diff --git a/docs/6.16/interfaces/ReadPreferenceFromOptions.html b/docs/6.16/interfaces/ReadPreferenceFromOptions.html new file mode 100644 index 00000000000..0046d97d0bc --- /dev/null +++ b/docs/6.16/interfaces/ReadPreferenceFromOptions.html @@ -0,0 +1,8 @@ +ReadPreferenceFromOptions | mongodb

    Interface ReadPreferenceFromOptions

    interface ReadPreferenceFromOptions {
        hedge?: HedgeOptions;
        maxStalenessSeconds?: number;
        readPreference?: ReadPreferenceLike | {
            maxStalenessSeconds?: number;
            mode?: ReadPreferenceMode | undefined;
            preference?: ReadPreferenceMode | undefined;
            tags?: TagSet[];
        };
        readPreferenceTags?: TagSet[];
        session?: ClientSession;
    }

    Hierarchy (view full)

    Properties

    hedge?: HedgeOptions

    Server mode in which the same query is dispatched in parallel to multiple replica set members.

    +
    maxStalenessSeconds?: number

    Max secondary read staleness in seconds, Minimum value is 90 seconds.

    +
    readPreference?: ReadPreferenceLike | {
        maxStalenessSeconds?: number;
        mode?: ReadPreferenceMode | undefined;
        preference?: ReadPreferenceMode | undefined;
        tags?: TagSet[];
    }
    readPreferenceTags?: TagSet[]
    session?: ClientSession
    diff --git a/docs/6.16/interfaces/ReadPreferenceLikeOptions.html b/docs/6.16/interfaces/ReadPreferenceLikeOptions.html new file mode 100644 index 00000000000..7237dc185f2 --- /dev/null +++ b/docs/6.16/interfaces/ReadPreferenceLikeOptions.html @@ -0,0 +1,6 @@ +ReadPreferenceLikeOptions | mongodb

    Interface ReadPreferenceLikeOptions

    interface ReadPreferenceLikeOptions {
        hedge?: HedgeOptions;
        maxStalenessSeconds?: number;
        readPreference?: ReadPreferenceLike | {
            maxStalenessSeconds?: number;
            mode?: ReadPreferenceMode | undefined;
            preference?: ReadPreferenceMode | undefined;
            tags?: TagSet[];
        };
    }

    Hierarchy (view full)

    Properties

    hedge?: HedgeOptions

    Server mode in which the same query is dispatched in parallel to multiple replica set members.

    +
    maxStalenessSeconds?: number

    Max secondary read staleness in seconds, Minimum value is 90 seconds.

    +
    readPreference?: ReadPreferenceLike | {
        maxStalenessSeconds?: number;
        mode?: ReadPreferenceMode | undefined;
        preference?: ReadPreferenceMode | undefined;
        tags?: TagSet[];
    }
    diff --git a/docs/6.16/interfaces/ReadPreferenceOptions.html b/docs/6.16/interfaces/ReadPreferenceOptions.html new file mode 100644 index 00000000000..f31ec670bf0 --- /dev/null +++ b/docs/6.16/interfaces/ReadPreferenceOptions.html @@ -0,0 +1,5 @@ +ReadPreferenceOptions | mongodb

    Interface ReadPreferenceOptions

    interface ReadPreferenceOptions {
        hedge?: HedgeOptions;
        maxStalenessSeconds?: number;
    }

    Hierarchy (view full)

    Properties

    hedge?: HedgeOptions

    Server mode in which the same query is dispatched in parallel to multiple replica set members.

    +
    maxStalenessSeconds?: number

    Max secondary read staleness in seconds, Minimum value is 90 seconds.

    +
    diff --git a/docs/6.16/interfaces/RenameOptions.html b/docs/6.16/interfaces/RenameOptions.html new file mode 100644 index 00000000000..005fb6a4c2b --- /dev/null +++ b/docs/6.16/interfaces/RenameOptions.html @@ -0,0 +1,75 @@ +RenameOptions | mongodb

    Interface RenameOptions

    interface RenameOptions {
        authdb?: string;
        bsonRegExp?: boolean;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        dbName?: string;
        dropTarget?: boolean;
        enableUtf8Validation?: boolean;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        ignoreUndefined?: boolean;
        maxTimeMS?: number;
        new_collection?: boolean;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        serializeFunctions?: boolean;
        session?: ClientSession;
        timeoutMS?: number;
        useBigInt64?: boolean;
        willRetryWrite?: boolean;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    authdb?: string
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    collation?: CollationOptions

    Collation

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    dbName?: string
    dropTarget?: boolean

    Drop the target name collection if it previously exists.

    +
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +

    Specifies the verbosity mode for the explain output.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    maxTimeMS?: number

    maxTimeMS is a server-side time limit in milliseconds for processing an operation.

    +
    new_collection?: boolean

    Unclear

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest).

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    willRetryWrite?: boolean

    Write Concern as an object

    +
    diff --git a/docs/6.16/interfaces/ReplaceOneModel.html b/docs/6.16/interfaces/ReplaceOneModel.html new file mode 100644 index 00000000000..a772a66e233 --- /dev/null +++ b/docs/6.16/interfaces/ReplaceOneModel.html @@ -0,0 +1,13 @@ +ReplaceOneModel | mongodb

    Interface ReplaceOneModel<TSchema>

    interface ReplaceOneModel<TSchema> {
        collation?: CollationOptions;
        filter: Filter<TSchema>;
        hint?: Hint;
        replacement: WithoutId<TSchema>;
        sort?: Sort;
        upsert?: boolean;
    }

    Type Parameters

    Properties

    collation?: CollationOptions

    Specifies a collation.

    +
    filter: Filter<TSchema>

    The filter that specifies which document to replace. In the case of multiple matches, the first document matched is replaced.

    +
    hint?: Hint

    The index to use. If specified, then the query system will only consider plans using the hinted index.

    +
    replacement: WithoutId<TSchema>

    The document with which to replace the matched document.

    +
    sort?: Sort

    Specifies the sort order for the documents matched by the filter.

    +
    upsert?: boolean

    When true, creates a new document if no document matches the query.

    +
    diff --git a/docs/6.16/interfaces/ReplaceOptions.html b/docs/6.16/interfaces/ReplaceOptions.html new file mode 100644 index 00000000000..3d89f02334a --- /dev/null +++ b/docs/6.16/interfaces/ReplaceOptions.html @@ -0,0 +1,81 @@ +ReplaceOptions | mongodb

    Interface ReplaceOptions

    interface ReplaceOptions {
        authdb?: string;
        bsonRegExp?: boolean;
        bypassDocumentValidation?: boolean;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        dbName?: string;
        enableUtf8Validation?: boolean;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        hint?: string | Document;
        ignoreUndefined?: boolean;
        let?: Document;
        maxTimeMS?: number;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        serializeFunctions?: boolean;
        session?: ClientSession;
        sort?: Sort;
        timeoutMS?: number;
        upsert?: boolean;
        useBigInt64?: boolean;
        willRetryWrite?: boolean;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    authdb?: string
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    bypassDocumentValidation?: boolean

    If true, allows the write to opt-out of document level validation

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    collation?: CollationOptions

    Specifies a collation

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +

    Specifies the verbosity mode for the explain output.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    hint?: string | Document

    Specify that the update query should only consider plans using the hinted index

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    let?: Document

    Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0).

    +
    maxTimeMS?: number

    maxTimeMS is a server-side time limit in milliseconds for processing an operation.

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest).

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    sort?: Sort

    Specifies the sort order for the documents matched by the filter.

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    upsert?: boolean

    When true, creates a new document if no document matches the query

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    willRetryWrite?: boolean

    Write Concern as an object

    +
    diff --git a/docs/6.16/interfaces/ResumeOptions.html b/docs/6.16/interfaces/ResumeOptions.html new file mode 100644 index 00000000000..5aad30abb0e --- /dev/null +++ b/docs/6.16/interfaces/ResumeOptions.html @@ -0,0 +1,10 @@ +ResumeOptions | mongodb

    Interface ResumeOptions

    Please use the ChangeStreamCursorOptions type instead.

    +
    interface ResumeOptions {
        batchSize?: number;
        collation?: CollationOptions;
        fullDocument?: string;
        maxAwaitTimeMS?: number;
        readPreference?: ReadPreference;
        resumeAfter?: unknown;
        startAfter?: unknown;
        startAtOperationTime?: Timestamp;
    }

    Properties

    batchSize?: number
    collation?: CollationOptions
    fullDocument?: string
    maxAwaitTimeMS?: number
    readPreference?: ReadPreference
    resumeAfter?: unknown
    startAfter?: unknown
    startAtOperationTime?: Timestamp
    diff --git a/docs/6.16/interfaces/RootFilterOperators.html b/docs/6.16/interfaces/RootFilterOperators.html new file mode 100644 index 00000000000..f89101ac9a1 --- /dev/null +++ b/docs/6.16/interfaces/RootFilterOperators.html @@ -0,0 +1,7 @@ +RootFilterOperators | mongodb

    Interface RootFilterOperators<TSchema>

    interface RootFilterOperators<TSchema> {
        $and?: Filter<TSchema>[];
        $comment?: string | Document;
        $nor?: Filter<TSchema>[];
        $or?: Filter<TSchema>[];
        $text?: {
            $caseSensitive?: boolean;
            $diacriticSensitive?: boolean;
            $language?: string;
            $search: string;
        };
        $where?: string | ((this: TSchema) => boolean);
    }

    Type Parameters

    • TSchema

    Hierarchy (view full)

    Properties

    $and?: Filter<TSchema>[]
    $comment?: string | Document
    $nor?: Filter<TSchema>[]
    $or?: Filter<TSchema>[]
    $text?: {
        $caseSensitive?: boolean;
        $diacriticSensitive?: boolean;
        $language?: string;
        $search: string;
    }
    $where?: string | ((this: TSchema) => boolean)
    diff --git a/docs/6.16/interfaces/SearchIndexDescription.html b/docs/6.16/interfaces/SearchIndexDescription.html new file mode 100644 index 00000000000..b156af3beb9 --- /dev/null +++ b/docs/6.16/interfaces/SearchIndexDescription.html @@ -0,0 +1,7 @@ +SearchIndexDescription | mongodb

    Interface SearchIndexDescription

    interface SearchIndexDescription {
        definition: Document;
        name?: string;
        type?: string;
    }

    Hierarchy (view full)

    Properties

    Properties

    definition: Document

    The index definition.

    +
    name?: string

    The name of the index.

    +
    type?: string

    The type of the index. Currently search or vectorSearch are supported.

    +
    diff --git a/docs/6.16/interfaces/SelectServerOptions.html b/docs/6.16/interfaces/SelectServerOptions.html new file mode 100644 index 00000000000..9de40ca5392 --- /dev/null +++ b/docs/6.16/interfaces/SelectServerOptions.html @@ -0,0 +1,7 @@ +SelectServerOptions | mongodb

    Interface SelectServerOptions

    interface SelectServerOptions {
        operationName: string;
        previousServer?: ServerDescription;
        readPreference?: ReadPreferenceLike;
        serverSelectionTimeoutMS?: number;
        session?: ClientSession;
    }

    Properties

    operationName: string
    previousServer?: ServerDescription
    readPreference?: ReadPreferenceLike
    serverSelectionTimeoutMS?: number

    How long to block for server selection before throwing an error

    +
    session?: ClientSession
    diff --git a/docs/6.16/interfaces/ServerApi.html b/docs/6.16/interfaces/ServerApi.html new file mode 100644 index 00000000000..a0c3a749e61 --- /dev/null +++ b/docs/6.16/interfaces/ServerApi.html @@ -0,0 +1,4 @@ +ServerApi | mongodb

    Interface ServerApi

    interface ServerApi {
        deprecationErrors?: boolean;
        strict?: boolean;
        version: "1";
    }

    Properties

    deprecationErrors?: boolean
    strict?: boolean
    version: "1"
    diff --git a/docs/6.16/interfaces/StreamDescriptionOptions.html b/docs/6.16/interfaces/StreamDescriptionOptions.html new file mode 100644 index 00000000000..6decb6701a9 --- /dev/null +++ b/docs/6.16/interfaces/StreamDescriptionOptions.html @@ -0,0 +1,4 @@ +StreamDescriptionOptions | mongodb

    Interface StreamDescriptionOptions

    interface StreamDescriptionOptions {
        compressors?: (
            | "none"
            | "snappy"
            | "zlib"
            | "zstd")[];
        loadBalanced: boolean;
        logicalSessionTimeoutMinutes?: number;
    }

    Hierarchy (view full)

    Properties

    compressors?: (
        | "none"
        | "snappy"
        | "zlib"
        | "zstd")[]
    loadBalanced: boolean
    logicalSessionTimeoutMinutes?: number
    diff --git a/docs/6.16/interfaces/TimeSeriesCollectionOptions.html b/docs/6.16/interfaces/TimeSeriesCollectionOptions.html new file mode 100644 index 00000000000..02d9517e087 --- /dev/null +++ b/docs/6.16/interfaces/TimeSeriesCollectionOptions.html @@ -0,0 +1,8 @@ +TimeSeriesCollectionOptions | mongodb

    Interface TimeSeriesCollectionOptions

    Configuration options for timeseries collections

    +
    interface TimeSeriesCollectionOptions {
        bucketMaxSpanSeconds?: number;
        bucketRoundingSeconds?: number;
        granularity?: string;
        metaField?: string;
        timeField: string;
    }

    Hierarchy (view full)

    Properties

    bucketMaxSpanSeconds?: number
    bucketRoundingSeconds?: number
    granularity?: string
    metaField?: string
    timeField: string
    diff --git a/docs/6.16/interfaces/TopologyDescriptionOptions.html b/docs/6.16/interfaces/TopologyDescriptionOptions.html new file mode 100644 index 00000000000..051a8b64200 --- /dev/null +++ b/docs/6.16/interfaces/TopologyDescriptionOptions.html @@ -0,0 +1,3 @@ +TopologyDescriptionOptions | mongodb

    Interface TopologyDescriptionOptions

    interface TopologyDescriptionOptions {
        heartbeatFrequencyMS?: number;
        localThresholdMS?: number;
    }

    Properties

    heartbeatFrequencyMS?: number
    localThresholdMS?: number
    diff --git a/docs/6.16/interfaces/TopologyVersion.html b/docs/6.16/interfaces/TopologyVersion.html new file mode 100644 index 00000000000..c90f165087e --- /dev/null +++ b/docs/6.16/interfaces/TopologyVersion.html @@ -0,0 +1,3 @@ +TopologyVersion | mongodb

    Interface TopologyVersion

    interface TopologyVersion {
        counter: Long;
        processId: ObjectId;
    }

    Properties

    Properties

    counter: Long
    processId: ObjectId
    diff --git a/docs/6.16/interfaces/TransactionOptions.html b/docs/6.16/interfaces/TransactionOptions.html new file mode 100644 index 00000000000..1489af6d6f8 --- /dev/null +++ b/docs/6.16/interfaces/TransactionOptions.html @@ -0,0 +1,72 @@ +TransactionOptions | mongodb

    Interface TransactionOptions

    Configuration options for a transaction.

    +
    interface TransactionOptions {
        authdb?: string;
        bsonRegExp?: boolean;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        dbName?: string;
        enableUtf8Validation?: boolean;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        ignoreUndefined?: boolean;
        maxCommitTimeMS?: number;
        maxTimeMS?: number;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        serializeFunctions?: boolean;
        session?: ClientSession;
        useBigInt64?: boolean;
        willRetryWrite?: boolean;
        writeConcern?: WriteConcern;
    }

    Hierarchy

    Properties

    authdb?: string
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    collation?: CollationOptions

    Collation

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +

    Specifies the verbosity mode for the explain output.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    maxCommitTimeMS?: number

    Specifies the maximum amount of time to allow a commit action on a transaction to run in milliseconds

    +
    maxTimeMS?: number

    maxTimeMS is a server-side time limit in milliseconds for processing an operation.

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    A default read concern for commands in this transaction

    +
    readPreference?: ReadPreferenceLike

    A default read preference for commands in this transaction

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    willRetryWrite?: boolean
    writeConcern?: WriteConcern

    A default writeConcern for commands in this transaction

    +
    diff --git a/docs/6.16/interfaces/UpdateDescription.html b/docs/6.16/interfaces/UpdateDescription.html new file mode 100644 index 00000000000..f024bc78f04 --- /dev/null +++ b/docs/6.16/interfaces/UpdateDescription.html @@ -0,0 +1,29 @@ +UpdateDescription | mongodb

    Interface UpdateDescription<TSchema>

    interface UpdateDescription<TSchema> {
        disambiguatedPaths?: Document;
        removedFields?: string[];
        truncatedArrays?: {
            field: string;
            newSize: number;
        }[];
        updatedFields?: Partial<TSchema>;
    }

    Type Parameters

    Properties

    disambiguatedPaths?: Document

    A document containing additional information about any ambiguous update paths from the update event. The document +maps the full ambiguous update path to an array containing the actual resolved components of the path. For example, +given a document shaped like { a: { '0': 0 } }, and an update of { $inc: 'a.0' }, disambiguated paths would look like +the following:

    +
      {
    'a.0': ['a', '0']
    } +
    + +

    This field is only present when there are ambiguous paths that are updated as a part of the update event.

    +

    On <8.2.0 servers, this field is only present when showExpandedEvents is set to true. +is enabled for the change stream.

    +

    On 8.2.0+ servers, this field is present for update events regardless of whether showExpandedEvents is enabled.

    +

    6.1.0

    +
    removedFields?: string[]

    An array of field names that were removed from the document.

    +
    truncatedArrays?: {
        field: string;
        newSize: number;
    }[]

    An array of documents which record array truncations performed with pipeline-based updates using one or more of the following stages:

    +
      +
    • $addFields
    • +
    • $set
    • +
    • $replaceRoot
    • +
    • $replaceWith
    • +
    +

    Type declaration

    • field: string

      The name of the truncated field.

      +
    • newSize: number

      The number of elements in the truncated array.

      +
    updatedFields?: Partial<TSchema>

    A document containing key:value pairs of names of the fields that were +changed, and the new value for those fields.

    +
    diff --git a/docs/6.16/interfaces/UpdateManyModel.html b/docs/6.16/interfaces/UpdateManyModel.html new file mode 100644 index 00000000000..87edeb4be7c --- /dev/null +++ b/docs/6.16/interfaces/UpdateManyModel.html @@ -0,0 +1,15 @@ +UpdateManyModel | mongodb

    Interface UpdateManyModel<TSchema>

    interface UpdateManyModel<TSchema> {
        arrayFilters?: Document[];
        collation?: CollationOptions;
        filter: Filter<TSchema>;
        hint?: Hint;
        update: Document[] | UpdateFilter<TSchema>;
        upsert?: boolean;
    }

    Type Parameters

    Properties

    arrayFilters?: Document[]

    A set of filters specifying to which array elements an update should apply.

    +
    collation?: CollationOptions

    Specifies a collation.

    +
    filter: Filter<TSchema>

    The filter to limit the updated documents.

    +
    hint?: Hint

    The index to use. If specified, then the query system will only consider plans using the hinted index.

    +

    The modifications to apply. The value can be either: +UpdateFilter - A document that contains update operator expressions, +Document[] - an aggregation pipeline.

    +
    upsert?: boolean

    When true, creates a new document if no document matches the query.

    +
    diff --git a/docs/6.16/interfaces/UpdateOneModel.html b/docs/6.16/interfaces/UpdateOneModel.html new file mode 100644 index 00000000000..dae5e9ff146 --- /dev/null +++ b/docs/6.16/interfaces/UpdateOneModel.html @@ -0,0 +1,17 @@ +UpdateOneModel | mongodb

    Interface UpdateOneModel<TSchema>

    interface UpdateOneModel<TSchema> {
        arrayFilters?: Document[];
        collation?: CollationOptions;
        filter: Filter<TSchema>;
        hint?: Hint;
        sort?: Sort;
        update: Document[] | UpdateFilter<TSchema>;
        upsert?: boolean;
    }

    Type Parameters

    Properties

    arrayFilters?: Document[]

    A set of filters specifying to which array elements an update should apply.

    +
    collation?: CollationOptions

    Specifies a collation.

    +
    filter: Filter<TSchema>

    The filter that specifies which document to update. In the case of multiple matches, the first document matched is updated.

    +
    hint?: Hint

    The index to use. If specified, then the query system will only consider plans using the hinted index.

    +
    sort?: Sort

    Specifies the sort order for the documents matched by the filter.

    +

    The modifications to apply. The value can be either: +UpdateFilter - A document that contains update operator expressions, +Document[] - an aggregation pipeline.

    +
    upsert?: boolean

    When true, creates a new document if no document matches the query.

    +
    diff --git a/docs/6.16/interfaces/UpdateOptions.html b/docs/6.16/interfaces/UpdateOptions.html new file mode 100644 index 00000000000..df783383f78 --- /dev/null +++ b/docs/6.16/interfaces/UpdateOptions.html @@ -0,0 +1,81 @@ +UpdateOptions | mongodb

    Interface UpdateOptions

    interface UpdateOptions {
        arrayFilters?: Document[];
        authdb?: string;
        bsonRegExp?: boolean;
        bypassDocumentValidation?: boolean;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        dbName?: string;
        enableUtf8Validation?: boolean;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        hint?: Hint;
        ignoreUndefined?: boolean;
        let?: Document;
        maxTimeMS?: number;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        serializeFunctions?: boolean;
        session?: ClientSession;
        timeoutMS?: number;
        upsert?: boolean;
        useBigInt64?: boolean;
        willRetryWrite?: boolean;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    arrayFilters?: Document[]

    A set of filters specifying to which array elements an update should apply

    +
    authdb?: string
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    bypassDocumentValidation?: boolean

    If true, allows the write to opt-out of document level validation

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    collation?: CollationOptions

    Specifies a collation

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +

    Specifies the verbosity mode for the explain output.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    hint?: Hint

    Specify that the update query should only consider plans using the hinted index

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    let?: Document

    Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0).

    +
    maxTimeMS?: number

    maxTimeMS is a server-side time limit in milliseconds for processing an operation.

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest).

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    upsert?: boolean

    When true, creates a new document if no document matches the query

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    willRetryWrite?: boolean

    Write Concern as an object

    +
    diff --git a/docs/6.16/interfaces/UpdateResult.html b/docs/6.16/interfaces/UpdateResult.html new file mode 100644 index 00000000000..3f6af4fed3d --- /dev/null +++ b/docs/6.16/interfaces/UpdateResult.html @@ -0,0 +1,12 @@ +UpdateResult | mongodb

    Interface UpdateResult<TSchema>

    TSchema is the schema of the collection

    +
    interface UpdateResult<TSchema> {
        acknowledged: boolean;
        matchedCount: number;
        modifiedCount: number;
        upsertedCount: number;
        upsertedId: null | InferIdType<TSchema>;
    }

    Type Parameters

    Properties

    acknowledged: boolean

    Indicates whether this write result was acknowledged. If not, then all other members of this result will be undefined

    +
    matchedCount: number

    The number of documents that matched the filter

    +
    modifiedCount: number

    The number of documents that were modified

    +
    upsertedCount: number

    The number of documents that were upserted

    +
    upsertedId: null | InferIdType<TSchema>

    The identifier of the inserted document if an upsert took place

    +
    diff --git a/docs/6.16/interfaces/UpdateStatement.html b/docs/6.16/interfaces/UpdateStatement.html new file mode 100644 index 00000000000..a57e6e5f4b7 --- /dev/null +++ b/docs/6.16/interfaces/UpdateStatement.html @@ -0,0 +1,17 @@ +UpdateStatement | mongodb

    Interface UpdateStatement

    interface UpdateStatement {
        arrayFilters?: Document[];
        collation?: CollationOptions;
        hint?: Hint;
        multi?: boolean;
        q: Document;
        sort?: SortForCmd;
        u: Document | Document[];
        upsert?: boolean;
    }

    Properties

    arrayFilters?: Document[]

    An array of filter documents that determines which array elements to modify for an update operation on an array field.

    +
    collation?: CollationOptions

    Specifies the collation to use for the operation.

    +
    hint?: Hint

    A document or string that specifies the index to use to support the query predicate.

    +
    multi?: boolean

    If true, updates all documents that meet the query criteria.

    +

    The query that matches documents to update.

    +
    sort?: SortForCmd

    Specifies the sort order for the documents matched by the filter.

    +

    The modifications to apply.

    +
    upsert?: boolean

    If true, perform an insert if no documents match the query.

    +
    diff --git a/docs/6.16/interfaces/ValidateCollectionOptions.html b/docs/6.16/interfaces/ValidateCollectionOptions.html new file mode 100644 index 00000000000..78d038b9dc6 --- /dev/null +++ b/docs/6.16/interfaces/ValidateCollectionOptions.html @@ -0,0 +1,73 @@ +ValidateCollectionOptions | mongodb

    Interface ValidateCollectionOptions

    interface ValidateCollectionOptions {
        authdb?: string;
        background?: boolean;
        bsonRegExp?: boolean;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        dbName?: string;
        enableUtf8Validation?: boolean;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        ignoreUndefined?: boolean;
        maxTimeMS?: number;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        serializeFunctions?: boolean;
        session?: ClientSession;
        timeoutMS?: number;
        useBigInt64?: boolean;
        willRetryWrite?: boolean;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    authdb?: string
    background?: boolean

    Validates a collection in the background, without interrupting read or write traffic (only in MongoDB 4.4+)

    +
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +

    false

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +

    false

    +
    collation?: CollationOptions

    Collation

    +
    comment?: unknown

    Comment to apply to the operation.

    +

    In server versions pre-4.4, 'comment' must be string. A server +error will be thrown if any other type is provided.

    +

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +

    Specifies the verbosity mode for the explain output.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +

    null

    +
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +note that the driver sets this to false

    +

    true

    +
    maxTimeMS?: number

    maxTimeMS is a server-side time limit in milliseconds for processing an operation.

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +

    false

    +
    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    +

    true

    +
    promoteValues?: boolean

    when deserializing will promote BSON values to their Node.js closest equivalent types.

    +

    true

    +
    raw?: boolean

    Enabling the raw option will return a Node.js Buffer +which is allocated using allocUnsafe API. +See this section from the Node.js Docs here +for more detail about what "unsafe" refers to in this context. +If you need to maintain your own editable clone of the bytes returned for an extended life time of the process, it is recommended you allocate +your own buffer and clone the contents:

    +
    const raw = await collection.findOne({}, { raw: true });
    const myBuffer = Buffer.alloc(raw.byteLength);
    myBuffer.set(raw, 0);
    // Only save and use `myBuffer` beyond this point +
    + +

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). +It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    +
    readConcern?: ReadConcernLike

    Specify a read concern and level for the collection. (only MongoDB 3.2 or higher supported)

    +
    readPreference?: ReadPreferenceLike

    The preferred read preference (ReadPreference.primary, ReadPreference.primary_preferred, ReadPreference.secondary, ReadPreference.secondary_preferred, ReadPreference.nearest).

    +
    retryWrites?: boolean

    Should retry failed writes

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    +

    false

    +
    session?: ClientSession

    Specify ClientSession for this command

    +
    timeoutMS?: number

    Specifies the time an operation will run until it throws a timeout error

    +
    useBigInt64?: boolean

    when deserializing a Long return as a BigInt.

    +

    false

    +
    willRetryWrite?: boolean

    Write Concern as an object

    +
    diff --git a/docs/6.16/interfaces/WriteConcernErrorData.html b/docs/6.16/interfaces/WriteConcernErrorData.html new file mode 100644 index 00000000000..6046933c8e1 --- /dev/null +++ b/docs/6.16/interfaces/WriteConcernErrorData.html @@ -0,0 +1,4 @@ +WriteConcernErrorData | mongodb

    Interface WriteConcernErrorData

    interface WriteConcernErrorData {
        code: number;
        errInfo?: Document;
        errmsg: string;
    }

    Properties

    Properties

    code: number
    errInfo?: Document
    errmsg: string
    diff --git a/docs/6.16/interfaces/WriteConcernErrorResult.html b/docs/6.16/interfaces/WriteConcernErrorResult.html new file mode 100644 index 00000000000..22f0448192f --- /dev/null +++ b/docs/6.16/interfaces/WriteConcernErrorResult.html @@ -0,0 +1,6 @@ +WriteConcernErrorResult | mongodb

    Interface WriteConcernErrorResult

    The type of the result property of MongoWriteConcernError

    +
    interface WriteConcernErrorResult {
        code?: number;
        errorLabels?: string[];
        ok: number;
        writeConcernError: {
            code: number;
            codeName?: string;
            errInfo?: Document;
            errmsg: string;
        };
        [x: string | number]: unknown;
    }

    Indexable

    • [x: string | number]: unknown

    Properties

    code?: number
    errorLabels?: string[]
    ok: number
    writeConcernError: {
        code: number;
        codeName?: string;
        errInfo?: Document;
        errmsg: string;
    }
    diff --git a/docs/6.16/interfaces/WriteConcernOptions.html b/docs/6.16/interfaces/WriteConcernOptions.html new file mode 100644 index 00000000000..376a64f6bce --- /dev/null +++ b/docs/6.16/interfaces/WriteConcernOptions.html @@ -0,0 +1,3 @@ +WriteConcernOptions | mongodb

    Interface WriteConcernOptions

    interface WriteConcernOptions {
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    Properties

    Write Concern as an object

    +
    diff --git a/docs/6.16/interfaces/WriteConcernSettings.html b/docs/6.16/interfaces/WriteConcernSettings.html new file mode 100644 index 00000000000..22db4507245 --- /dev/null +++ b/docs/6.16/interfaces/WriteConcernSettings.html @@ -0,0 +1,15 @@ +WriteConcernSettings | mongodb

    Interface WriteConcernSettings

    interface WriteConcernSettings {
        fsync?: boolean | 1;
        j?: boolean;
        journal?: boolean;
        w?: W;
        wtimeout?: number;
        wtimeoutMS?: number;
    }

    Properties

    fsync?: boolean | 1

    The file sync write concern.

    +

    Will be removed in the next major version. Please use the journal option.

    +
    j?: boolean

    The journal write concern.

    +

    Will be removed in the next major version. Please use the journal option.

    +
    journal?: boolean

    The journal write concern

    +
    w?: W

    The write concern

    +
    wtimeout?: number

    The write concern timeout.

    +
    wtimeoutMS?: number

    The write concern timeout.

    +
    diff --git a/docs/6.16/media/LICENSE.md b/docs/6.16/media/LICENSE.md new file mode 100644 index 00000000000..ad410e11302 --- /dev/null +++ b/docs/6.16/media/LICENSE.md @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/docs/6.16/modules.html b/docs/6.16/modules.html new file mode 100644 index 00000000000..f9b118b4c48 --- /dev/null +++ b/docs/6.16/modules.html @@ -0,0 +1,441 @@ +mongodb

    mongodb

    Error

    Error + +The `MongoOperationTimeoutError` class represents an error that occurs when an operation could not be completed within the specified `timeoutMS`. +It is generated by the driver in support of the "client side operation timeout" feature so inherits from `MongoDriverError`. +When `timeoutMS` is enabled `MongoServerError`s relating to `MaxTimeExpired` errors will be converted to `MongoOperationTimeoutError`

    Event

    Other

    Binary +BSONRegExp +BSONSymbol +BSONType +Code +DBRef +Decimal128 +deserialize +Document +Double +Int32 +Long +MaxKey +MinKey +ObjectId +serialize +Timestamp +UUID +BSON +AbstractCursor +Admin +AggregationCursor +Batch +BulkOperationBase +BulkWriteResult +CancellationToken +ChangeStream +ClientEncryption +ClientSession +Collection +Db +ExplainableCursor +FindCursor +FindOperators +GridFSBucket +GridFSBucketReadStream +GridFSBucketWriteStream +HostAddress +ListCollectionsCursor +ListIndexesCursor +ListSearchIndexesCursor +MongoClient +MongoCredentials +MongoCryptAzureKMSRequestError +MongoCryptCreateDataKeyError +MongoCryptCreateEncryptedCollectionError +MongoCryptError +MongoCryptInvalidArgumentError +MongoCryptKMSRequestNetworkTimeoutError +MongoDBCollectionNamespace +MongoDBNamespace +OrderedBulkOperation +ReadConcern +ReadPreference +RunCommandCursor +ServerCapabilities +ServerDescription +ServerSession +StreamDescription +TopologyDescription +Transaction +TypedEventEmitter +UnorderedBulkOperation +WriteConcern +AbstractCursorOptions +AggregateOptions +AggregationCursorOptions +AsyncDisposable +Auth +AuthMechanismProperties +AutoEncryptionOptions +AWSCredentials +AWSEncryptionKeyOptions +AWSKMSProviderConfiguration +AzureEncryptionKeyOptions +BSONSerializeOptions +BulkWriteOperationError +BulkWriteOptions +ChangeStreamCollModDocument +ChangeStreamCreateDocument +ChangeStreamCreateIndexDocument +ChangeStreamDeleteDocument +ChangeStreamDocumentCollectionUUID +ChangeStreamDocumentCommon +ChangeStreamDocumentKey +ChangeStreamDocumentOperationDescription +ChangeStreamDropDatabaseDocument +ChangeStreamDropDocument +ChangeStreamDropIndexDocument +ChangeStreamInsertDocument +ChangeStreamInvalidateDocument +ChangeStreamNameSpace +ChangeStreamOptions +ChangeStreamRefineCollectionShardKeyDocument +ChangeStreamRenameDocument +ChangeStreamReplaceDocument +ChangeStreamReshardCollectionDocument +ChangeStreamShardCollectionDocument +ChangeStreamSplitEvent +ChangeStreamUpdateDocument +ClientBulkWriteError +ClientBulkWriteOptions +ClientBulkWriteResult +ClientDeleteManyModel +ClientDeleteOneModel +ClientDeleteResult +ClientEncryptionCreateDataKeyProviderOptions +ClientEncryptionEncryptOptions +ClientEncryptionOptions +ClientEncryptionRewrapManyDataKeyProviderOptions +ClientEncryptionRewrapManyDataKeyResult +ClientInsertOneModel +ClientInsertOneResult +ClientMetadata +ClientMetadataOptions +ClientReplaceOneModel +ClientSessionOptions +ClientUpdateManyModel +ClientUpdateOneModel +ClientUpdateResult +ClientWriteModel +CloseOptions +ClusteredCollectionOptions +ClusterTime +CollationOptions +CollectionInfo +CollectionOptions +CommandOperationOptions +ConnectionOptions +ConnectionPoolOptions +ConnectOptions +CountDocumentsOptions +CountOptions +CreateCollectionOptions +CreateIndexesOptions +CredentialProviders +CursorStreamOptions +DataKey +DbOptions +DbStatsOptions +DeleteManyModel +DeleteOneModel +DeleteOptions +DeleteResult +DeleteStatement +DriverInfo +DropCollectionOptions +EndSessionOptions +ErrorDescription +EstimatedDocumentCountOptions +ExplainCommandOptions +ExplainOptions +FilterOperators +FindOneAndDeleteOptions +FindOneAndReplaceOptions +FindOneAndUpdateOptions +FindOptions +GCPEncryptionKeyOptions +GridFSBucketOptions +GridFSBucketReadStreamOptions +GridFSBucketReadStreamOptionsWithRevision +GridFSBucketWriteStreamOptions +GridFSChunk +GridFSFile +HedgeOptions +IdPInfo +IdPServerResponse +IndexDescription +IndexInformationOptions +InsertManyResult +InsertOneModel +InsertOneOptions +InsertOneResult +KMIPEncryptionKeyOptions +KMIPKMSProviderConfiguration +KMSProviders +ListCollectionsOptions +ListDatabasesOptions +ListDatabasesResult +LocalKMSProviderConfiguration +Log +LogComponentSeveritiesClientOptions +ModifyResult +MongoClientOptions +MongoCredentialsOptions +MongoDBLogWritable +MongoNetworkErrorOptions +MongoOptions +MonitorOptions +OIDCCallbackParams +OIDCResponse +OperationOptions +PkFactory +ProxyOptions +RangeOptions +ReadPreferenceFromOptions +ReadPreferenceLikeOptions +ReadPreferenceOptions +RenameOptions +ReplaceOneModel +ReplaceOptions +ResumeOptions +RootFilterOperators +SearchIndexDescription +SelectServerOptions +ServerApi +StreamDescriptionOptions +TimeSeriesCollectionOptions +TopologyDescriptionOptions +TopologyVersion +TransactionOptions +UpdateDescription +UpdateManyModel +UpdateOneModel +UpdateOptions +UpdateResult +UpdateStatement +ValidateCollectionOptions +WriteConcernErrorData +WriteConcernErrorResult +WriteConcernOptions +WriteConcernSettings +Abortable +AbstractCursorEvents +AcceptedFields +AddToSetOperators +AlternativeType +AnyBulkWriteOperation +AnyClientBulkWriteModel +AnyError +ArrayElement +ArrayOperator +AuthMechanism +AutoEncryptionExtraOptions +AutoEncryptionLoggerLevel +AWSCredentialProvider +AzureKMSProviderConfiguration +BatchType +BitwiseFilter +BSONTypeAlias +Callback +ChangeStreamDocument +ChangeStreamEvents +ClientBulkWriteModel +ClientEncryptionDataKeyProvider +ClientEncryptionSocketOptions +ClientEncryptionTlsOptions +ClientSessionEvents +CommonEvents +Compressor +CompressorName +Condition +ConnectionEvents +ConnectionPoolEvents +CSFLEKMSTlsOptions +CursorFlag +CursorTimeoutMode +DistinctOptions +DropDatabaseOptions +DropIndexesOptions +EnhancedOmit +EventEmitterWithState +EventsDescription +ExplainVerbosity +ExplainVerbosityLike +Filter +FilterOperations +Flatten +GCPKMSProviderConfiguration +GenericListener +GridFSBucketEvents +GSSAPICanonicalizationValue +Hint +IndexDescriptionCompact +IndexDescriptionInfo +IndexDirection +IndexSpecification +InferIdType +IntegerType +IsAny +Join +KeysOfAType +KeysOfOtherType +ListIndexesOptions +ListSearchIndexesOptions +MatchKeysAndValues +MongoClientEvents +MongoErrorLabel +MongoLoggableComponent +MonitorEvents +NestedPaths +NestedPathsOfType +NonObjectIdLikeDocument +NotAcceptedFields +NumericType +OIDCCallbackFunction +OneOrMore +OnlyFieldsOfType +OperationTime +OptionalId +OptionalUnlessRequiredId +ProfilingLevel +ProfilingLevelOptions +PropertyType +PullAllOperator +PullOperator +PushOperator +ReadConcernLevel +ReadConcernLike +ReadPreferenceLike +ReadPreferenceMode +RegExpOrString +RemoveUserOptions +ResumeToken +ReturnDocument +RunCommandOptions +RunCursorCommandOptions +SchemaMember +ServerApiVersion +ServerEvents +ServerMonitoringMode +ServerSessionId +ServerType +SetFields +SetProfilingLevelOptions +SeverityLevel +Sort +SortDirection +SortDirectionForCmd +SortForCmd +Stream +StrictFilter +StrictMatchKeysAndValues +StrictUpdateFilter +SupportedNodeConnectionOptions +SupportedSocketOptions +SupportedTLSConnectionOptions +SupportedTLSSocketOptions +TagSet +TopologyEvents +TopologyType +UpdateFilter +W +WithId +WithoutId +WithSessionCallback +WithTransactionCallback +AuthMechanism +AutoEncryptionLoggerLevel +BatchType +Compressor +CURSOR_FLAGS +CursorTimeoutMode +ExplainVerbosity +GSSAPICanonicalizationValue +LEGAL_TCP_SOCKET_OPTIONS +LEGAL_TLS_SOCKET_OPTIONS +MONGO_CLIENT_EVENTS +MongoErrorLabel +MongoLoggableComponent +ProfilingLevel +ReadConcernLevel +ReadPreferenceMode +ReturnDocument +ServerApiVersion +ServerMonitoringMode +ServerType +SeverityLevel +TopologyType +configureExplicitResourceManagement +

    Other

    Re-exports Binary
    Re-exports BSONRegExp
    Re-exports BSONSymbol
    Re-exports BSONType
    Re-exports Code
    Re-exports DBRef
    Re-exports Decimal128
    Re-exports deserialize
    Re-exports Document
    Re-exports Double
    Re-exports Int32
    Re-exports Long
    Re-exports MaxKey
    Re-exports MinKey
    Re-exports ObjectId
    Re-exports serialize
    Re-exports Timestamp
    Re-exports UUID
    diff --git a/docs/6.16/modules/BSON.html b/docs/6.16/modules/BSON.html new file mode 100644 index 00000000000..3193264c21d --- /dev/null +++ b/docs/6.16/modules/BSON.html @@ -0,0 +1,71 @@ +BSON | mongodb

    Namespace BSON

    Index

    BSONType

    BSONType + +A special type for _internal_ MongoDB use and is **not** associated with the regular Date type.

    Error

    Error + + + +An error generated when BSON bytes are invalid. +Reports the offset the parser was able to reach before encountering the error.

    Error + +An error generated when BSON functions encounter an unexpected input +or reaches an unexpected/invalid internal state

    Error + +`BSONError` objects are thrown when BSON encounters an error. + +This is the parent class for all the other errors thrown by this library.

    Other

    diff --git a/docs/6.16/types/AWSCredentialProvider.html b/docs/6.16/types/AWSCredentialProvider.html new file mode 100644 index 00000000000..3d9544d6f1e --- /dev/null +++ b/docs/6.16/types/AWSCredentialProvider.html @@ -0,0 +1,4 @@ +AWSCredentialProvider | mongodb

    Type Alias AWSCredentialProvider

    AWSCredentialProvider: (() => Promise<AWSCredentials>)
      +
    • +
    +
    diff --git a/docs/6.16/types/Abortable.html b/docs/6.16/types/Abortable.html new file mode 100644 index 00000000000..c132b6451da --- /dev/null +++ b/docs/6.16/types/Abortable.html @@ -0,0 +1,13 @@ +Abortable | mongodb

    Type Alias Abortable

    Abortable: {
        signal?: AbortSignal;
    }

    Type declaration

    • Optional Experimentalsignal?: AbortSignal

      When provided, the corresponding AbortController can be used to abort an asynchronous action.

      +

      The signal.reason value is used as the error thrown.

      +

      NOTE: If an abort signal aborts an operation while the driver is writing to the underlying +socket or reading the response from the server, the socket will be closed. +If signals are aborted at a high rate during socket read/writes this can lead to a high rate of connection reestablishment.

      +

      We plan to mitigate this in a future release, please follow NODE-6062 (timeoutMS expiration suffers the same limitation).

      +

      AbortSignals are likely a best fit for human interactive interruption (ex. ctrl-C) where the frequency +of cancellation is reasonably low. If a signal is programmatically aborted for 100s of operations you can empty +the driver's connection pool.

      +
      const controller = new AbortController();
      const { signal } = controller;
      process.on('SIGINT', () => controller.abort(new Error('^C pressed')));

      try {
      const res = await fetch('...', { signal });
      await collection.findOne(await res.json(), { signal });
      catch (error) {
      if (error === signal.reason) {
      // signal abort error handling
      }
      } +
      + +
    diff --git a/docs/6.16/types/AbstractCursorEvents.html b/docs/6.16/types/AbstractCursorEvents.html new file mode 100644 index 00000000000..04864630a77 --- /dev/null +++ b/docs/6.16/types/AbstractCursorEvents.html @@ -0,0 +1 @@ +AbstractCursorEvents | mongodb

    Type Alias AbstractCursorEvents

    AbstractCursorEvents: {
        close(): void;
    }
    diff --git a/docs/6.16/types/AcceptedFields.html b/docs/6.16/types/AcceptedFields.html new file mode 100644 index 00000000000..3ab7664f8ac --- /dev/null +++ b/docs/6.16/types/AcceptedFields.html @@ -0,0 +1 @@ +AcceptedFields | mongodb

    Type Alias AcceptedFields<TSchema, FieldType, AssignableType>

    AcceptedFields<TSchema, FieldType, AssignableType>: {
        readonly [key in KeysOfAType<TSchema, FieldType>]?: AssignableType
    }

    Type Parameters

    • TSchema
    • FieldType
    • AssignableType
    diff --git a/docs/6.16/types/AddToSetOperators.html b/docs/6.16/types/AddToSetOperators.html new file mode 100644 index 00000000000..8513e3d605a --- /dev/null +++ b/docs/6.16/types/AddToSetOperators.html @@ -0,0 +1 @@ +AddToSetOperators | mongodb

    Type Alias AddToSetOperators<Type>

    AddToSetOperators<Type>: {
        $each?: Flatten<Type>[];
    }

    Type Parameters

    • Type
    diff --git a/docs/6.16/types/AlternativeType.html b/docs/6.16/types/AlternativeType.html new file mode 100644 index 00000000000..4a628e2f7d8 --- /dev/null +++ b/docs/6.16/types/AlternativeType.html @@ -0,0 +1,4 @@ +AlternativeType | mongodb

    Type Alias AlternativeType<T>

    AlternativeType<T>: T extends ReadonlyArray<infer U>
        ? T | RegExpOrString<U>
        : RegExpOrString<T>

    It is possible to search using alternative types in mongodb e.g. +string types can be searched using a regex in mongo +array types can be searched using their element type

    +

    Type Parameters

    • T
    diff --git a/docs/6.16/types/AnyBulkWriteOperation.html b/docs/6.16/types/AnyBulkWriteOperation.html new file mode 100644 index 00000000000..08ba88d38aa --- /dev/null +++ b/docs/6.16/types/AnyBulkWriteOperation.html @@ -0,0 +1 @@ +AnyBulkWriteOperation | mongodb

    Type Alias AnyBulkWriteOperation<TSchema>

    AnyBulkWriteOperation<TSchema>:
        | {
            insertOne: InsertOneModel<TSchema>;
        }
        | {
            replaceOne: ReplaceOneModel<TSchema>;
        }
        | {
            updateOne: UpdateOneModel<TSchema>;
        }
        | {
            updateMany: UpdateManyModel<TSchema>;
        }
        | {
            deleteOne: DeleteOneModel<TSchema>;
        }
        | {
            deleteMany: DeleteManyModel<TSchema>;
        }

    Type Parameters

    diff --git a/docs/6.16/types/AnyClientBulkWriteModel.html b/docs/6.16/types/AnyClientBulkWriteModel.html new file mode 100644 index 00000000000..1ff97432a13 --- /dev/null +++ b/docs/6.16/types/AnyClientBulkWriteModel.html @@ -0,0 +1,3 @@ +AnyClientBulkWriteModel | mongodb

    Type Alias AnyClientBulkWriteModel<TSchema>

    Used to represent any of the client bulk write models that can be passed as an array +to MongoClient#bulkWrite.

    +

    Type Parameters

    diff --git a/docs/6.16/types/AnyError.html b/docs/6.16/types/AnyError.html new file mode 100644 index 00000000000..e105662788c --- /dev/null +++ b/docs/6.16/types/AnyError.html @@ -0,0 +1 @@ +AnyError | mongodb

    Type Alias AnyError

    AnyError: MongoError | Error
    diff --git a/docs/6.16/types/ArrayElement.html b/docs/6.16/types/ArrayElement.html new file mode 100644 index 00000000000..cef6cafeb06 --- /dev/null +++ b/docs/6.16/types/ArrayElement.html @@ -0,0 +1 @@ +ArrayElement | mongodb

    Type Alias ArrayElement<Type>

    ArrayElement<Type>: Type extends ReadonlyArray<infer Item>
        ? Item
        : never

    Type Parameters

    • Type
    diff --git a/docs/6.16/types/ArrayOperator.html b/docs/6.16/types/ArrayOperator.html new file mode 100644 index 00000000000..c31e5b69305 --- /dev/null +++ b/docs/6.16/types/ArrayOperator.html @@ -0,0 +1 @@ +ArrayOperator | mongodb

    Type Alias ArrayOperator<Type>

    ArrayOperator<Type>: {
        $each?: Flatten<Type>[];
        $position?: number;
        $slice?: number;
        $sort?: Sort;
    }

    Type Parameters

    • Type
    diff --git a/docs/6.16/types/AuthMechanism.html b/docs/6.16/types/AuthMechanism.html new file mode 100644 index 00000000000..bf4186c9a0f --- /dev/null +++ b/docs/6.16/types/AuthMechanism.html @@ -0,0 +1 @@ +AuthMechanism | mongodb

    Type Alias AuthMechanism

    AuthMechanism: typeof AuthMechanism[keyof typeof AuthMechanism]
    diff --git a/docs/6.16/types/AutoEncryptionExtraOptions.html b/docs/6.16/types/AutoEncryptionExtraOptions.html new file mode 100644 index 00000000000..139ec719316 --- /dev/null +++ b/docs/6.16/types/AutoEncryptionExtraOptions.html @@ -0,0 +1,3 @@ +AutoEncryptionExtraOptions | mongodb

    Type Alias AutoEncryptionExtraOptions

    AutoEncryptionExtraOptions: NonNullable<AutoEncryptionOptions["extraOptions"]>

    Extra options related to the mongocryptd process +* Available in MongoDB 6.0 or higher.

    +
    diff --git a/docs/6.16/types/AutoEncryptionLoggerLevel.html b/docs/6.16/types/AutoEncryptionLoggerLevel.html new file mode 100644 index 00000000000..0a826536b9a --- /dev/null +++ b/docs/6.16/types/AutoEncryptionLoggerLevel.html @@ -0,0 +1,32 @@ +AutoEncryptionLoggerLevel | mongodb

    Type Alias AutoEncryptionLoggerLevel

    AutoEncryptionLoggerLevel: typeof AutoEncryptionLoggerLevel[keyof typeof AutoEncryptionLoggerLevel]

    The level of severity of the log message

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueLevel
    0Fatal Error
    1Error
    2Warning
    3Info
    4Trace
    +
    diff --git a/docs/6.16/types/AzureKMSProviderConfiguration.html b/docs/6.16/types/AzureKMSProviderConfiguration.html new file mode 100644 index 00000000000..f854aeff5dd --- /dev/null +++ b/docs/6.16/types/AzureKMSProviderConfiguration.html @@ -0,0 +1,9 @@ +AzureKMSProviderConfiguration | mongodb

    Type Alias AzureKMSProviderConfiguration

    AzureKMSProviderConfiguration: {
        clientId: string;
        clientSecret: string;
        identityPlatformEndpoint?: string;
        tenantId: string;
    } | {
        accessToken: string;
    }

    Type declaration

    • clientId: string

      The client ID to authenticate a registered application

      +
    • clientSecret: string

      The client secret to authenticate a registered application

      +
    • OptionalidentityPlatformEndpoint?: string

      If present, a host with optional port. E.g. "example.com" or "example.com:443". +This is optional, and only needed if customer is using a non-commercial Azure instance +(e.g. a government or China account, which use different URLs). +Defaults to "login.microsoftonline.com"

      +
    • tenantId: string

      The tenant ID identifies the organization for the account

      +

    Type declaration

    • accessToken: string

      If present, an access token to authenticate with Azure.

      +
    diff --git a/docs/6.16/types/BSON.BSONType.html b/docs/6.16/types/BSON.BSONType.html new file mode 100644 index 00000000000..8b63cdabec5 --- /dev/null +++ b/docs/6.16/types/BSON.BSONType.html @@ -0,0 +1 @@ +BSONType | mongodb

    Type Alias BSONType

    BSONType: typeof BSON.BSONType[keyof typeof BSON.BSONType]
    diff --git a/docs/6.16/types/BSON.BinarySequence.html b/docs/6.16/types/BSON.BinarySequence.html new file mode 100644 index 00000000000..f4cbf101a95 --- /dev/null +++ b/docs/6.16/types/BSON.BinarySequence.html @@ -0,0 +1 @@ +BinarySequence | mongodb

    Type Alias BinarySequence

    BinarySequence: Uint8Array | number[]
    diff --git a/docs/6.16/types/BSON.CalculateObjectSizeOptions.html b/docs/6.16/types/BSON.CalculateObjectSizeOptions.html new file mode 100644 index 00000000000..98b914db04f --- /dev/null +++ b/docs/6.16/types/BSON.CalculateObjectSizeOptions.html @@ -0,0 +1 @@ +CalculateObjectSizeOptions | mongodb

    Type Alias CalculateObjectSizeOptions

    CalculateObjectSizeOptions: Pick<SerializeOptions, "serializeFunctions" | "ignoreUndefined">
    diff --git a/docs/6.16/types/BSON.EJSONOptions.html b/docs/6.16/types/BSON.EJSONOptions.html new file mode 100644 index 00000000000..93f9213d088 --- /dev/null +++ b/docs/6.16/types/BSON.EJSONOptions.html @@ -0,0 +1,7 @@ +EJSONOptions | mongodb

    Type Alias EJSONOptions

    EJSONOptions: {
        legacy?: boolean;
        relaxed?: boolean;
        useBigInt64?: boolean;
    }

    Type declaration

    • Optionallegacy?: boolean

      Output using the Extended JSON v1 spec

      +

      false

      +
    • Optionalrelaxed?: boolean

      Enable Extended JSON's relaxed mode, which attempts to return native JS types where possible, rather than BSON types

      +

      false

      +
    • OptionaluseBigInt64?: boolean

      Enable native bigint support

      +

      false

      +
    diff --git a/docs/6.16/types/BSON.LongWithoutOverrides.html b/docs/6.16/types/BSON.LongWithoutOverrides.html new file mode 100644 index 00000000000..b4598d571a6 --- /dev/null +++ b/docs/6.16/types/BSON.LongWithoutOverrides.html @@ -0,0 +1 @@ +LongWithoutOverrides | mongodb

    Type Alias LongWithoutOverrides

    LongWithoutOverrides: (new (low: unknown, high?: number | boolean, unsigned?: boolean) => {
        [P in Exclude<keyof Long, TimestampOverrides>]: Long[P]
    })
    diff --git a/docs/6.16/types/BSON.OnDemand.html b/docs/6.16/types/BSON.OnDemand.html new file mode 100644 index 00000000000..ba79f35deef --- /dev/null +++ b/docs/6.16/types/BSON.OnDemand.html @@ -0,0 +1,2 @@ +OnDemand | mongodb

    Type Alias OnDemandExperimental

    OnDemand: {
        BSONElement: BSONElement;
        ByteUtils: ByteUtils;
        NumberUtils: NumberUtils;
        parseToElements: ((this: void, bytes: Uint8Array, startOffset?: number) => Iterable<BSONElement>);
    }

    A new set of BSON APIs that are currently experimental and not intended for production use.

    +
    diff --git a/docs/6.16/types/BSON.TimestampOverrides.html b/docs/6.16/types/BSON.TimestampOverrides.html new file mode 100644 index 00000000000..abc978b65b0 --- /dev/null +++ b/docs/6.16/types/BSON.TimestampOverrides.html @@ -0,0 +1 @@ +TimestampOverrides | mongodb

    Type Alias TimestampOverrides

    TimestampOverrides:
        | "_bsontype"
        | "toExtendedJSON"
        | "fromExtendedJSON"
        | "inspect"
    diff --git a/docs/6.16/types/BSON.UUIDExtended.html b/docs/6.16/types/BSON.UUIDExtended.html new file mode 100644 index 00000000000..0e0fd17ae61 --- /dev/null +++ b/docs/6.16/types/BSON.UUIDExtended.html @@ -0,0 +1 @@ +UUIDExtended | mongodb

    Type Alias UUIDExtended

    UUIDExtended: {
        $uuid: string;
    }
    diff --git a/docs/6.16/types/BSONTypeAlias.html b/docs/6.16/types/BSONTypeAlias.html new file mode 100644 index 00000000000..26e9a54bb0e --- /dev/null +++ b/docs/6.16/types/BSONTypeAlias.html @@ -0,0 +1 @@ +BSONTypeAlias | mongodb

    Type Alias BSONTypeAlias

    BSONTypeAlias: keyof typeof BSON.BSONType
    diff --git a/docs/6.16/types/BatchType.html b/docs/6.16/types/BatchType.html new file mode 100644 index 00000000000..db91ac9ed2e --- /dev/null +++ b/docs/6.16/types/BatchType.html @@ -0,0 +1 @@ +BatchType | mongodb

    Type Alias BatchType

    BatchType: typeof BatchType[keyof typeof BatchType]
    diff --git a/docs/6.16/types/BitwiseFilter.html b/docs/6.16/types/BitwiseFilter.html new file mode 100644 index 00000000000..418b472e995 --- /dev/null +++ b/docs/6.16/types/BitwiseFilter.html @@ -0,0 +1 @@ +BitwiseFilter | mongodb

    Type Alias BitwiseFilter

    BitwiseFilter: number | Binary | ReadonlyArray<number>
    diff --git a/docs/6.16/types/CSFLEKMSTlsOptions.html b/docs/6.16/types/CSFLEKMSTlsOptions.html new file mode 100644 index 00000000000..b1743c94d40 --- /dev/null +++ b/docs/6.16/types/CSFLEKMSTlsOptions.html @@ -0,0 +1 @@ +CSFLEKMSTlsOptions | mongodb

    Type Alias CSFLEKMSTlsOptions

    CSFLEKMSTlsOptions: {
        aws?: ClientEncryptionTlsOptions;
        azure?: ClientEncryptionTlsOptions;
        gcp?: ClientEncryptionTlsOptions;
        kmip?: ClientEncryptionTlsOptions;
        local?: ClientEncryptionTlsOptions;
        [key: string]: ClientEncryptionTlsOptions | undefined;
    }
    diff --git a/docs/6.16/types/Callback.html b/docs/6.16/types/Callback.html new file mode 100644 index 00000000000..6c5ef324ca1 --- /dev/null +++ b/docs/6.16/types/Callback.html @@ -0,0 +1,2 @@ +Callback | mongodb

    Type Alias Callback<T>

    Callback<T>: ((error?: AnyError, result?: T) => void)

    MongoDB Driver style callback

    +

    Type Parameters

    • T = any
    diff --git a/docs/6.16/types/ChangeStreamDocument.html b/docs/6.16/types/ChangeStreamDocument.html new file mode 100644 index 00000000000..65304944030 --- /dev/null +++ b/docs/6.16/types/ChangeStreamDocument.html @@ -0,0 +1 @@ +ChangeStreamDocument | mongodb
    diff --git a/docs/6.16/types/ChangeStreamEvents.html b/docs/6.16/types/ChangeStreamEvents.html new file mode 100644 index 00000000000..ef1f2e95039 --- /dev/null +++ b/docs/6.16/types/ChangeStreamEvents.html @@ -0,0 +1,4 @@ +ChangeStreamEvents | mongodb

    Type Alias ChangeStreamEvents<TSchema, TChange>

    ChangeStreamEvents<TSchema, TChange>: {
        change(change: TChange): void;
        close(): void;
        end(): void;
        error(error: Error): void;
        init(response: any): void;
        more(response?: any): void;
        response(): void;
        resumeTokenChanged(token: unknown): void;
    }

    Type Parameters

    Type declaration

    • change:function
    • close:function
      • Returns void

        Note that the close event is currently emitted whenever the internal ChangeStreamCursor +instance is closed, which can occur multiple times for a given ChangeStream instance.

        +

        TODO(NODE-6434): address this issue in NODE-6434

        +
    • end:function
    • error:function
    • init:function
    • more:function
    • response:function
    • resumeTokenChanged:function
    diff --git a/docs/6.16/types/ClientBulkWriteModel.html b/docs/6.16/types/ClientBulkWriteModel.html new file mode 100644 index 00000000000..475cfa9c48e --- /dev/null +++ b/docs/6.16/types/ClientBulkWriteModel.html @@ -0,0 +1,6 @@ +ClientBulkWriteModel | mongodb

    Type Alias ClientBulkWriteModel<SchemaMap>

    ClientBulkWriteModel<SchemaMap>: {
        [Namespace in keyof SchemaMap]: AnyClientBulkWriteModel<SchemaMap[Namespace]> & {
            namespace: Namespace;
        }
    }[keyof SchemaMap]

    A mapping of namespace strings to collections schemas.

    +

    Type Parameters

    type MongoDBSchemas = {
    'db.books': Book;
    'db.authors': Author;
    }

    const model: ClientBulkWriteModel<MongoDBSchemas> = {
    namespace: 'db.books'
    name: 'insertOne',
    document: { title: 'Practical MongoDB Aggregations', authorName: 3 } // error `authorName` cannot be number
    }; +
    + +

    The type of the namespace field narrows other parts of the BulkWriteModel to use the correct schema for type assertions.

    +
    diff --git a/docs/6.16/types/ClientEncryptionDataKeyProvider.html b/docs/6.16/types/ClientEncryptionDataKeyProvider.html new file mode 100644 index 00000000000..e477725d96b --- /dev/null +++ b/docs/6.16/types/ClientEncryptionDataKeyProvider.html @@ -0,0 +1,8 @@ +ClientEncryptionDataKeyProvider | mongodb

    Type Alias ClientEncryptionDataKeyProvider

    ClientEncryptionDataKeyProvider: keyof KMSProviders

    A data key provider. Allowed values:

    +
      +
    • aws, gcp, local, kmip or azure
    • +
    • (mongodb-client-encryption>=6.0.1 only) a named key, in the form of: +aws:<name>, gcp:<name>, local:<name>, kmip:<name>, azure:<name> +where name is an alphanumeric string, underscores allowed.
    • +
    +
    diff --git a/docs/6.16/types/ClientEncryptionSocketOptions.html b/docs/6.16/types/ClientEncryptionSocketOptions.html new file mode 100644 index 00000000000..8b06847a4a4 --- /dev/null +++ b/docs/6.16/types/ClientEncryptionSocketOptions.html @@ -0,0 +1,2 @@ +ClientEncryptionSocketOptions | mongodb

    Type Alias ClientEncryptionSocketOptions

    ClientEncryptionSocketOptions: Pick<MongoClientOptions, "autoSelectFamily" | "autoSelectFamilyAttemptTimeout">

    Socket options to use for KMS requests.

    +
    diff --git a/docs/6.16/types/ClientEncryptionTlsOptions.html b/docs/6.16/types/ClientEncryptionTlsOptions.html new file mode 100644 index 00000000000..6580d4ff542 --- /dev/null +++ b/docs/6.16/types/ClientEncryptionTlsOptions.html @@ -0,0 +1,9 @@ +ClientEncryptionTlsOptions | mongodb

    Type Alias ClientEncryptionTlsOptions

    ClientEncryptionTlsOptions: Pick<MongoClientOptions, "tlsCAFile" | "tlsCertificateKeyFile" | "tlsCertificateKeyFilePassword">

    TLS options to use when connecting. The spec specifically calls out which insecure +tls options are not allowed:

    +
      +
    • tlsAllowInvalidCertificates
    • +
    • tlsAllowInvalidHostnames
    • +
    • tlsInsecure
    • +
    +

    These options are not included in the type, and are ignored if provided.

    +
    diff --git a/docs/6.16/types/ClientSessionEvents.html b/docs/6.16/types/ClientSessionEvents.html new file mode 100644 index 00000000000..60c74dec365 --- /dev/null +++ b/docs/6.16/types/ClientSessionEvents.html @@ -0,0 +1 @@ +ClientSessionEvents | mongodb

    Type Alias ClientSessionEvents

    ClientSessionEvents: {
        ended(session: ClientSession): void;
    }
    diff --git a/docs/6.16/types/CommonEvents.html b/docs/6.16/types/CommonEvents.html new file mode 100644 index 00000000000..df14d68f087 --- /dev/null +++ b/docs/6.16/types/CommonEvents.html @@ -0,0 +1 @@ +CommonEvents | mongodb

    Type Alias CommonEvents

    CommonEvents: "newListener" | "removeListener"
    diff --git a/docs/6.16/types/Compressor.html b/docs/6.16/types/Compressor.html new file mode 100644 index 00000000000..25af204adae --- /dev/null +++ b/docs/6.16/types/Compressor.html @@ -0,0 +1 @@ +Compressor | mongodb
    diff --git a/docs/6.16/types/CompressorName.html b/docs/6.16/types/CompressorName.html new file mode 100644 index 00000000000..5990a58806a --- /dev/null +++ b/docs/6.16/types/CompressorName.html @@ -0,0 +1 @@ +CompressorName | mongodb

    Type Alias CompressorName

    CompressorName: keyof typeof Compressor
    diff --git a/docs/6.16/types/Condition.html b/docs/6.16/types/Condition.html new file mode 100644 index 00000000000..f6b6bb951f9 --- /dev/null +++ b/docs/6.16/types/Condition.html @@ -0,0 +1 @@ +Condition | mongodb

    Type Alias Condition<T>

    Type Parameters

    • T
    diff --git a/docs/6.16/types/ConnectionEvents.html b/docs/6.16/types/ConnectionEvents.html new file mode 100644 index 00000000000..8872d511984 --- /dev/null +++ b/docs/6.16/types/ConnectionEvents.html @@ -0,0 +1 @@ +ConnectionEvents | mongodb

    Type Alias ConnectionEvents

    ConnectionEvents: {
        close(): void;
        clusterTimeReceived(clusterTime: Document): void;
        commandFailed(event: CommandFailedEvent): void;
        commandStarted(event: CommandStartedEvent): void;
        commandSucceeded(event: CommandSucceededEvent): void;
        pinned(pinType: string): void;
        unpinned(pinType: string): void;
    }
    diff --git a/docs/6.16/types/ConnectionPoolEvents.html b/docs/6.16/types/ConnectionPoolEvents.html new file mode 100644 index 00000000000..8440d76fa80 --- /dev/null +++ b/docs/6.16/types/ConnectionPoolEvents.html @@ -0,0 +1 @@ +ConnectionPoolEvents | mongodb

    Type Alias ConnectionPoolEvents

    ConnectionPoolEvents: {
        connectionCheckedIn(event: ConnectionCheckedInEvent): void;
        connectionCheckedOut(event: ConnectionCheckedOutEvent): void;
        connectionCheckOutFailed(event: ConnectionCheckOutFailedEvent): void;
        connectionCheckOutStarted(event: ConnectionCheckOutStartedEvent): void;
        connectionClosed(event: ConnectionClosedEvent): void;
        connectionCreated(event: ConnectionCreatedEvent): void;
        connectionPoolCleared(event: ConnectionPoolClearedEvent): void;
        connectionPoolClosed(event: ConnectionPoolClosedEvent): void;
        connectionPoolCreated(event: ConnectionPoolCreatedEvent): void;
        connectionPoolReady(event: ConnectionPoolReadyEvent): void;
        connectionReady(event: ConnectionReadyEvent): void;
    } & Omit<ConnectionEvents, "close" | "message">
    diff --git a/docs/6.16/types/CursorFlag.html b/docs/6.16/types/CursorFlag.html new file mode 100644 index 00000000000..a4a84a0397c --- /dev/null +++ b/docs/6.16/types/CursorFlag.html @@ -0,0 +1 @@ +CursorFlag | mongodb

    Type Alias CursorFlag

    CursorFlag: typeof CURSOR_FLAGS[number]
    diff --git a/docs/6.16/types/CursorTimeoutMode.html b/docs/6.16/types/CursorTimeoutMode.html new file mode 100644 index 00000000000..7b32283c87b --- /dev/null +++ b/docs/6.16/types/CursorTimeoutMode.html @@ -0,0 +1 @@ +CursorTimeoutMode | mongodb

    Type Alias CursorTimeoutModeExperimental

    CursorTimeoutMode: typeof CursorTimeoutMode[keyof typeof CursorTimeoutMode]
    diff --git a/docs/6.16/types/DistinctOptions.html b/docs/6.16/types/DistinctOptions.html new file mode 100644 index 00000000000..298fa00cf93 --- /dev/null +++ b/docs/6.16/types/DistinctOptions.html @@ -0,0 +1,7 @@ +DistinctOptions | mongodb

    Type Alias DistinctOptions

    DistinctOptions: CommandOperationOptions & {
        hint?: Document | string;
    }

    Type declaration

    • Optionalhint?: Document | string

      7.1

      +

      The index to use. Specify either the index name as a string or the index key pattern. +If specified, then the query system will only consider plans using the hinted index.

      +

      If provided as a string, hint must be index name for an index on the collection. +If provided as an object, hint must be an index description for an index defined on the collection.

      +

      See https://www.mongodb.com/docs/manual/reference/command/distinct/#command-fields.

      +
    diff --git a/docs/6.16/types/DropDatabaseOptions.html b/docs/6.16/types/DropDatabaseOptions.html new file mode 100644 index 00000000000..a8d08b9923c --- /dev/null +++ b/docs/6.16/types/DropDatabaseOptions.html @@ -0,0 +1 @@ +DropDatabaseOptions | mongodb

    Type Alias DropDatabaseOptions

    DropDatabaseOptions: CommandOperationOptions
    diff --git a/docs/6.16/types/DropIndexesOptions.html b/docs/6.16/types/DropIndexesOptions.html new file mode 100644 index 00000000000..dd54a05ecea --- /dev/null +++ b/docs/6.16/types/DropIndexesOptions.html @@ -0,0 +1 @@ +DropIndexesOptions | mongodb

    Type Alias DropIndexesOptions

    DropIndexesOptions: CommandOperationOptions
    diff --git a/docs/6.16/types/EnhancedOmit.html b/docs/6.16/types/EnhancedOmit.html new file mode 100644 index 00000000000..c808076a439 --- /dev/null +++ b/docs/6.16/types/EnhancedOmit.html @@ -0,0 +1,2 @@ +EnhancedOmit | mongodb

    Type Alias EnhancedOmit<TRecordOrUnion, KeyUnion>

    EnhancedOmit<TRecordOrUnion, KeyUnion>: string extends keyof TRecordOrUnion
        ? TRecordOrUnion
        : TRecordOrUnion extends any
            ? Pick<TRecordOrUnion, Exclude<keyof TRecordOrUnion, KeyUnion>>
            : never

    TypeScript Omit (Exclude to be specific) does not work for objects with an "any" indexed type, and breaks discriminated unions

    +

    Type Parameters

    • TRecordOrUnion
    • KeyUnion
    diff --git a/docs/6.16/types/EventEmitterWithState.html b/docs/6.16/types/EventEmitterWithState.html new file mode 100644 index 00000000000..6af338369f0 --- /dev/null +++ b/docs/6.16/types/EventEmitterWithState.html @@ -0,0 +1 @@ +EventEmitterWithState | mongodb

    Type Alias EventEmitterWithState

    EventEmitterWithState: {}
    diff --git a/docs/6.16/types/EventsDescription.html b/docs/6.16/types/EventsDescription.html new file mode 100644 index 00000000000..1d47802023b --- /dev/null +++ b/docs/6.16/types/EventsDescription.html @@ -0,0 +1,2 @@ +EventsDescription | mongodb

    Type Alias EventsDescription

    EventsDescription: Record<string, GenericListener>

    Event description type

    +
    diff --git a/docs/6.16/types/ExplainVerbosity.html b/docs/6.16/types/ExplainVerbosity.html new file mode 100644 index 00000000000..5c4253d083a --- /dev/null +++ b/docs/6.16/types/ExplainVerbosity.html @@ -0,0 +1 @@ +ExplainVerbosity | mongodb

    Type Alias ExplainVerbosity

    ExplainVerbosity: string
    diff --git a/docs/6.16/types/ExplainVerbosityLike.html b/docs/6.16/types/ExplainVerbosityLike.html new file mode 100644 index 00000000000..6d8cbea1721 --- /dev/null +++ b/docs/6.16/types/ExplainVerbosityLike.html @@ -0,0 +1,3 @@ +ExplainVerbosityLike | mongodb

    Type Alias ExplainVerbosityLike

    ExplainVerbosityLike: ExplainVerbosity | boolean

    For backwards compatibility, true is interpreted as "allPlansExecution" +and false as "queryPlanner".

    +
    diff --git a/docs/6.16/types/Filter.html b/docs/6.16/types/Filter.html new file mode 100644 index 00000000000..9dea71e5c17 --- /dev/null +++ b/docs/6.16/types/Filter.html @@ -0,0 +1,2 @@ +Filter | mongodb

    Type Alias Filter<TSchema>

    Filter<TSchema>: {
        [P in keyof WithId<TSchema>]?: Condition<WithId<TSchema>[P]>
    } & RootFilterOperators<WithId<TSchema>>

    A MongoDB filter can be some portion of the schema or a set of operators

    +

    Type Parameters

    • TSchema
    diff --git a/docs/6.16/types/FilterOperations.html b/docs/6.16/types/FilterOperations.html new file mode 100644 index 00000000000..ae83c52bd30 --- /dev/null +++ b/docs/6.16/types/FilterOperations.html @@ -0,0 +1 @@ +FilterOperations | mongodb

    Type Alias FilterOperations<T>

    FilterOperations<T>: T extends Record<string, any>
        ? {
            [key in keyof T]?: FilterOperators<T[key]>
        }
        : FilterOperators<T>

    Type Parameters

    • T
    diff --git a/docs/6.16/types/Flatten.html b/docs/6.16/types/Flatten.html new file mode 100644 index 00000000000..690d1f098f3 --- /dev/null +++ b/docs/6.16/types/Flatten.html @@ -0,0 +1 @@ +Flatten | mongodb

    Type Alias Flatten<Type>

    Flatten<Type>: Type extends ReadonlyArray<infer Item>
        ? Item
        : Type

    Type Parameters

    • Type
    diff --git a/docs/6.16/types/GCPKMSProviderConfiguration.html b/docs/6.16/types/GCPKMSProviderConfiguration.html new file mode 100644 index 00000000000..9cf085f5e76 --- /dev/null +++ b/docs/6.16/types/GCPKMSProviderConfiguration.html @@ -0,0 +1,6 @@ +GCPKMSProviderConfiguration | mongodb

    Type Alias GCPKMSProviderConfiguration

    GCPKMSProviderConfiguration: {
        email: string;
        endpoint?: string;
        privateKey: string | Buffer;
    } | {
        accessToken: string;
    }

    Type declaration

    • email: string

      The service account email to authenticate

      +
    • Optionalendpoint?: string

      If present, a host with optional port. E.g. "example.com" or "example.com:443". +Defaults to "oauth2.googleapis.com"

      +
    • privateKey: string | Buffer

      A PKCS#8 encrypted key. This can either be a base64 string or a binary representation

      +

    Type declaration

    • accessToken: string

      If present, an access token to authenticate with GCP.

      +
    diff --git a/docs/6.16/types/GSSAPICanonicalizationValue.html b/docs/6.16/types/GSSAPICanonicalizationValue.html new file mode 100644 index 00000000000..e1de7563b01 --- /dev/null +++ b/docs/6.16/types/GSSAPICanonicalizationValue.html @@ -0,0 +1 @@ +GSSAPICanonicalizationValue | mongodb

    Type Alias GSSAPICanonicalizationValue

    GSSAPICanonicalizationValue: typeof GSSAPICanonicalizationValue[keyof typeof GSSAPICanonicalizationValue]
    diff --git a/docs/6.16/types/GenericListener.html b/docs/6.16/types/GenericListener.html new file mode 100644 index 00000000000..45189e769d1 --- /dev/null +++ b/docs/6.16/types/GenericListener.html @@ -0,0 +1 @@ +GenericListener | mongodb

    Type Alias GenericListener

    GenericListener: ((...args: any[]) => void)
    diff --git a/docs/6.16/types/GridFSBucketEvents.html b/docs/6.16/types/GridFSBucketEvents.html new file mode 100644 index 00000000000..6cad3ed8ee5 --- /dev/null +++ b/docs/6.16/types/GridFSBucketEvents.html @@ -0,0 +1 @@ +GridFSBucketEvents | mongodb

    Type Alias GridFSBucketEvents

    GridFSBucketEvents: {
        index(): void;
    }
    diff --git a/docs/6.16/types/Hint.html b/docs/6.16/types/Hint.html new file mode 100644 index 00000000000..38115f125fd --- /dev/null +++ b/docs/6.16/types/Hint.html @@ -0,0 +1 @@ +Hint | mongodb

    Type Alias Hint

    Hint: string | Document
    diff --git a/docs/6.16/types/IndexDescriptionCompact.html b/docs/6.16/types/IndexDescriptionCompact.html new file mode 100644 index 00000000000..5532661390c --- /dev/null +++ b/docs/6.16/types/IndexDescriptionCompact.html @@ -0,0 +1 @@ +IndexDescriptionCompact | mongodb

    Type Alias IndexDescriptionCompact

    IndexDescriptionCompact: Record<string, [name: string, direction: IndexDirection][]>
    diff --git a/docs/6.16/types/IndexDescriptionInfo.html b/docs/6.16/types/IndexDescriptionInfo.html new file mode 100644 index 00000000000..24c0bcf928d --- /dev/null +++ b/docs/6.16/types/IndexDescriptionInfo.html @@ -0,0 +1,2 @@ +IndexDescriptionInfo | mongodb

    Type Alias IndexDescriptionInfo

    IndexDescriptionInfo: Omit<IndexDescription, "key" | "version"> & {
        key: {
            [key: string]: IndexDirection;
        };
        v?: IndexDescription["version"];
    } & Document
    diff --git a/docs/6.16/types/IndexDirection.html b/docs/6.16/types/IndexDirection.html new file mode 100644 index 00000000000..74692421967 --- /dev/null +++ b/docs/6.16/types/IndexDirection.html @@ -0,0 +1 @@ +IndexDirection | mongodb

    Type Alias IndexDirection

    IndexDirection:
        | -1
        | 1
        | "2d"
        | "2dsphere"
        | "text"
        | "geoHaystack"
        | "hashed"
        | number
    diff --git a/docs/6.16/types/IndexSpecification.html b/docs/6.16/types/IndexSpecification.html new file mode 100644 index 00000000000..2d7c50228dd --- /dev/null +++ b/docs/6.16/types/IndexSpecification.html @@ -0,0 +1 @@ +IndexSpecification | mongodb

    Type Alias IndexSpecification

    IndexSpecification: OneOrMore<
        | string
        | [string, IndexDirection]
        | {
            [key: string]: IndexDirection;
        }
        | Map<string, IndexDirection>>
    diff --git a/docs/6.16/types/InferIdType.html b/docs/6.16/types/InferIdType.html new file mode 100644 index 00000000000..7c356c3ec1b --- /dev/null +++ b/docs/6.16/types/InferIdType.html @@ -0,0 +1,2 @@ +InferIdType | mongodb

    Type Alias InferIdType<TSchema>

    InferIdType<TSchema>: TSchema extends {
            _id: infer IdType;
        }
        ? Record<any, never> extends IdType
            ? never
            : IdType
        : TSchema extends {
                _id?: infer IdType;
            }
            ? unknown extends IdType
                ? ObjectId
                : IdType
            : ObjectId

    Given an object shaped type, return the type of the _id field or default to ObjectId

    +

    Type Parameters

    • TSchema
    diff --git a/docs/6.16/types/IntegerType.html b/docs/6.16/types/IntegerType.html new file mode 100644 index 00000000000..28648f0440e --- /dev/null +++ b/docs/6.16/types/IntegerType.html @@ -0,0 +1 @@ +IntegerType | mongodb

    Type Alias IntegerType

    IntegerType:
        | number
        | Int32
        | Long
        | bigint
    diff --git a/docs/6.16/types/IsAny.html b/docs/6.16/types/IsAny.html new file mode 100644 index 00000000000..1a4d9e828cf --- /dev/null +++ b/docs/6.16/types/IsAny.html @@ -0,0 +1 @@ +IsAny | mongodb

    Type Alias IsAny<Type, ResultIfAny, ResultIfNotAny>

    IsAny<Type, ResultIfAny, ResultIfNotAny>: true extends false & Type
        ? ResultIfAny
        : ResultIfNotAny

    Type Parameters

    • Type
    • ResultIfAny
    • ResultIfNotAny
    diff --git a/docs/6.16/types/Join.html b/docs/6.16/types/Join.html new file mode 100644 index 00000000000..3567090184d --- /dev/null +++ b/docs/6.16/types/Join.html @@ -0,0 +1 @@ +Join | mongodb

    Type Alias Join<T, D>

    Join<T, D>: T extends []
        ? ""
        : T extends [string | number]
            ? `${T[0]}`
            : T extends [string | number, ...(infer R)]
                ? `${T[0]}${D}${Join<R, D>}`
                : string

    Type Parameters

    • T extends unknown[]
    • D extends string
    diff --git a/docs/6.16/types/KeysOfAType.html b/docs/6.16/types/KeysOfAType.html new file mode 100644 index 00000000000..f7c88daf47f --- /dev/null +++ b/docs/6.16/types/KeysOfAType.html @@ -0,0 +1 @@ +KeysOfAType | mongodb

    Type Alias KeysOfAType<TSchema, Type>

    KeysOfAType<TSchema, Type>: {
        [key in keyof TSchema]: NonNullable<TSchema[key]> extends Type
            ? key
            : never
    }[keyof TSchema]

    Type Parameters

    • TSchema
    • Type
    diff --git a/docs/6.16/types/KeysOfOtherType.html b/docs/6.16/types/KeysOfOtherType.html new file mode 100644 index 00000000000..dc78035f140 --- /dev/null +++ b/docs/6.16/types/KeysOfOtherType.html @@ -0,0 +1 @@ +KeysOfOtherType | mongodb

    Type Alias KeysOfOtherType<TSchema, Type>

    KeysOfOtherType<TSchema, Type>: {
        [key in keyof TSchema]: NonNullable<TSchema[key]> extends Type
            ? never
            : key
    }[keyof TSchema]

    Type Parameters

    • TSchema
    • Type
    diff --git a/docs/6.16/types/ListIndexesOptions.html b/docs/6.16/types/ListIndexesOptions.html new file mode 100644 index 00000000000..dbb43687fb7 --- /dev/null +++ b/docs/6.16/types/ListIndexesOptions.html @@ -0,0 +1 @@ +ListIndexesOptions | mongodb

    Type Alias ListIndexesOptions

    ListIndexesOptions: AbstractCursorOptions & {}
    diff --git a/docs/6.16/types/ListSearchIndexesOptions.html b/docs/6.16/types/ListSearchIndexesOptions.html new file mode 100644 index 00000000000..48be62b7972 --- /dev/null +++ b/docs/6.16/types/ListSearchIndexesOptions.html @@ -0,0 +1 @@ +ListSearchIndexesOptions | mongodb

    Type Alias ListSearchIndexesOptions

    ListSearchIndexesOptions: Omit<AggregateOptions, "readConcern" | "writeConcern">
    diff --git a/docs/6.16/types/MatchKeysAndValues.html b/docs/6.16/types/MatchKeysAndValues.html new file mode 100644 index 00000000000..b30cd1a0fd6 --- /dev/null +++ b/docs/6.16/types/MatchKeysAndValues.html @@ -0,0 +1 @@ +MatchKeysAndValues | mongodb

    Type Alias MatchKeysAndValues<TSchema>

    MatchKeysAndValues<TSchema>: Readonly<Partial<TSchema>> & Record<string, any>

    Type Parameters

    • TSchema
    diff --git a/docs/6.16/types/MongoClientEvents.html b/docs/6.16/types/MongoClientEvents.html new file mode 100644 index 00000000000..f6e61fb4186 --- /dev/null +++ b/docs/6.16/types/MongoClientEvents.html @@ -0,0 +1 @@ +MongoClientEvents | mongodb

    Type Alias MongoClientEvents

    MongoClientEvents: Pick<TopologyEvents, typeof MONGO_CLIENT_EVENTS[number]> & {
        open(mongoClient: MongoClient): void;
    }
    diff --git a/docs/6.16/types/MongoErrorLabel.html b/docs/6.16/types/MongoErrorLabel.html new file mode 100644 index 00000000000..ee6b03cba56 --- /dev/null +++ b/docs/6.16/types/MongoErrorLabel.html @@ -0,0 +1 @@ +MongoErrorLabel | mongodb

    Type Alias MongoErrorLabel

    MongoErrorLabel: typeof MongoErrorLabel[keyof typeof MongoErrorLabel]
    diff --git a/docs/6.16/types/MongoLoggableComponent.html b/docs/6.16/types/MongoLoggableComponent.html new file mode 100644 index 00000000000..afa94f8d762 --- /dev/null +++ b/docs/6.16/types/MongoLoggableComponent.html @@ -0,0 +1 @@ +MongoLoggableComponent | mongodb

    Type Alias MongoLoggableComponent

    MongoLoggableComponent: typeof MongoLoggableComponent[keyof typeof MongoLoggableComponent]
    diff --git a/docs/6.16/types/MonitorEvents.html b/docs/6.16/types/MonitorEvents.html new file mode 100644 index 00000000000..36068e49ad5 --- /dev/null +++ b/docs/6.16/types/MonitorEvents.html @@ -0,0 +1 @@ +MonitorEvents | mongodb

    Type Alias MonitorEvents

    MonitorEvents: {
        close(): void;
        resetConnectionPool(): void;
        resetServer(error?: MongoError): void;
        serverHeartbeatFailed(event: ServerHeartbeatFailedEvent): void;
        serverHeartbeatStarted(event: ServerHeartbeatStartedEvent): void;
        serverHeartbeatSucceeded(event: ServerHeartbeatSucceededEvent): void;
    } & EventEmitterWithState
    diff --git a/docs/6.16/types/NestedPaths.html b/docs/6.16/types/NestedPaths.html new file mode 100644 index 00000000000..8305d4c7b21 --- /dev/null +++ b/docs/6.16/types/NestedPaths.html @@ -0,0 +1,8 @@ +NestedPaths | mongodb

    Type Alias NestedPaths<Type, Depth>

    NestedPaths<Type, Depth>: Depth["length"] extends 8
        ? []
        : Type extends
                | string
                | number
                | bigint
                | boolean
                | Date
                | RegExp
                | Buffer
                | Uint8Array
                | ((...args: any[]) => any)
                | {
                    _bsontype: string;
                }
            ? []
            : Type extends ReadonlyArray<infer ArrayType>
                ? [] | [number, ...NestedPaths<ArrayType, [...Depth, 1]>]
                : Type extends Map<string, any>
                    ? [string]
                    : Type extends object
                        ? {
                            [Key in Extract<keyof Type, string>]: Type[Key] extends Type
                                ? [Key]
                                : Type extends Type[Key]
                                    ? [Key]
                                    : (...)[(...)] extends ReadonlyArray<(...)>
                                        ? (...) extends (...)
                                            ? (...)
                                            : (...)
                                        : (...) | (...)
                        }[Extract<keyof Type, string>]
                        : []

    returns tuple of strings (keys to be joined on '.') that represent every path into a schema +https://www.mongodb.com/docs/manual/tutorial/query-embedded-documents/

    +

    Type Parameters

    • Type
    • Depth extends number[]

    Through testing we determined that a depth of 8 is safe for the typescript compiler +and provides reasonable compilation times. This number is otherwise not special and +should be changed if issues are found with this level of checking. Beyond this +depth any helpers that make use of NestedPaths should devolve to not asserting any +type safety on the input.

    +
    diff --git a/docs/6.16/types/NestedPathsOfType.html b/docs/6.16/types/NestedPathsOfType.html new file mode 100644 index 00000000000..c0bd7148b24 --- /dev/null +++ b/docs/6.16/types/NestedPathsOfType.html @@ -0,0 +1,3 @@ +NestedPathsOfType | mongodb

    Type Alias NestedPathsOfType<TSchema, Type>

    NestedPathsOfType<TSchema, Type>: KeysOfAType<{
        [Property in Join<NestedPaths<TSchema, []>, ".">]: PropertyType<TSchema, Property>
    }, Type>

    returns keys (strings) for every path into a schema with a value of type +https://www.mongodb.com/docs/manual/tutorial/query-embedded-documents/

    +

    Type Parameters

    • TSchema
    • Type
    diff --git a/docs/6.16/types/NonObjectIdLikeDocument.html b/docs/6.16/types/NonObjectIdLikeDocument.html new file mode 100644 index 00000000000..0f397902754 --- /dev/null +++ b/docs/6.16/types/NonObjectIdLikeDocument.html @@ -0,0 +1,2 @@ +NonObjectIdLikeDocument | mongodb

    Type Alias NonObjectIdLikeDocument

    NonObjectIdLikeDocument: {
        [key in keyof ObjectIdLike]?: never
    } & Document

    A type that extends Document but forbids anything that "looks like" an object id.

    +
    diff --git a/docs/6.16/types/NotAcceptedFields.html b/docs/6.16/types/NotAcceptedFields.html new file mode 100644 index 00000000000..e203104cfe8 --- /dev/null +++ b/docs/6.16/types/NotAcceptedFields.html @@ -0,0 +1,2 @@ +NotAcceptedFields | mongodb

    Type Alias NotAcceptedFields<TSchema, FieldType>

    NotAcceptedFields<TSchema, FieldType>: {
        readonly [key in KeysOfOtherType<TSchema, FieldType>]?: never
    }

    It avoids using fields with not acceptable types

    +

    Type Parameters

    • TSchema
    • FieldType
    diff --git a/docs/6.16/types/NumericType.html b/docs/6.16/types/NumericType.html new file mode 100644 index 00000000000..db2bd2b558b --- /dev/null +++ b/docs/6.16/types/NumericType.html @@ -0,0 +1 @@ +NumericType | mongodb

    Type Alias NumericType

    NumericType: IntegerType | Decimal128 | Double
    diff --git a/docs/6.16/types/OIDCCallbackFunction.html b/docs/6.16/types/OIDCCallbackFunction.html new file mode 100644 index 00000000000..f5e0470713e --- /dev/null +++ b/docs/6.16/types/OIDCCallbackFunction.html @@ -0,0 +1,2 @@ +OIDCCallbackFunction | mongodb

    Type Alias OIDCCallbackFunction

    OIDCCallbackFunction: ((params: OIDCCallbackParams) => Promise<OIDCResponse>)

    The signature of the human or machine callback functions.

    +
    diff --git a/docs/6.16/types/OneOrMore.html b/docs/6.16/types/OneOrMore.html new file mode 100644 index 00000000000..d019d3833a2 --- /dev/null +++ b/docs/6.16/types/OneOrMore.html @@ -0,0 +1 @@ +OneOrMore | mongodb

    Type Alias OneOrMore<T>

    OneOrMore<T>: T | ReadonlyArray<T>

    Type Parameters

    • T
    diff --git a/docs/6.16/types/OnlyFieldsOfType.html b/docs/6.16/types/OnlyFieldsOfType.html new file mode 100644 index 00000000000..5e0dab8cbad --- /dev/null +++ b/docs/6.16/types/OnlyFieldsOfType.html @@ -0,0 +1 @@ +OnlyFieldsOfType | mongodb

    Type Alias OnlyFieldsOfType<TSchema, FieldType, AssignableType>

    OnlyFieldsOfType<TSchema, FieldType, AssignableType>: IsAny<TSchema[keyof TSchema], AssignableType extends FieldType
        ? Record<string, FieldType>
        : Record<string, AssignableType>, AcceptedFields<TSchema, FieldType, AssignableType> & NotAcceptedFields<TSchema, FieldType> & Record<string, AssignableType>>

    Type Parameters

    • TSchema
    • FieldType = any
    • AssignableType = FieldType
    diff --git a/docs/6.16/types/OperationTime.html b/docs/6.16/types/OperationTime.html new file mode 100644 index 00000000000..bdb62fede78 --- /dev/null +++ b/docs/6.16/types/OperationTime.html @@ -0,0 +1,3 @@ +OperationTime | mongodb

    Type Alias OperationTime

    OperationTime: Timestamp

    Represents a specific point in time on a server. Can be retrieved by using db.command()

    +
    diff --git a/docs/6.16/types/OptionalId.html b/docs/6.16/types/OptionalId.html new file mode 100644 index 00000000000..fd5b22cf1be --- /dev/null +++ b/docs/6.16/types/OptionalId.html @@ -0,0 +1,2 @@ +OptionalId | mongodb

    Type Alias OptionalId<TSchema>

    OptionalId<TSchema>: EnhancedOmit<TSchema, "_id"> & {
        _id?: InferIdType<TSchema>;
    }

    Add an optional _id field to an object shaped type

    +

    Type Parameters

    • TSchema
    diff --git a/docs/6.16/types/OptionalUnlessRequiredId.html b/docs/6.16/types/OptionalUnlessRequiredId.html new file mode 100644 index 00000000000..4abac9f6c47 --- /dev/null +++ b/docs/6.16/types/OptionalUnlessRequiredId.html @@ -0,0 +1,3 @@ +OptionalUnlessRequiredId | mongodb

    Type Alias OptionalUnlessRequiredId<TSchema>

    OptionalUnlessRequiredId<TSchema>: TSchema extends {
            _id: any;
        }
        ? TSchema
        : OptionalId<TSchema>

    Adds an optional _id field to an object shaped type, unless the _id field is required on that type. +In the case _id is required, this method continues to require_id.

    +

    Type Parameters

    • TSchema
    diff --git a/docs/6.16/types/ProfilingLevel.html b/docs/6.16/types/ProfilingLevel.html new file mode 100644 index 00000000000..36b09fdc916 --- /dev/null +++ b/docs/6.16/types/ProfilingLevel.html @@ -0,0 +1 @@ +ProfilingLevel | mongodb
    diff --git a/docs/6.16/types/ProfilingLevelOptions.html b/docs/6.16/types/ProfilingLevelOptions.html new file mode 100644 index 00000000000..4b10be6e6ee --- /dev/null +++ b/docs/6.16/types/ProfilingLevelOptions.html @@ -0,0 +1 @@ +ProfilingLevelOptions | mongodb

    Type Alias ProfilingLevelOptions

    ProfilingLevelOptions: CommandOperationOptions
    diff --git a/docs/6.16/types/PropertyType.html b/docs/6.16/types/PropertyType.html new file mode 100644 index 00000000000..f89e10b3ea7 --- /dev/null +++ b/docs/6.16/types/PropertyType.html @@ -0,0 +1 @@ +PropertyType | mongodb

    Type Alias PropertyType<Type, Property>

    PropertyType<Type, Property>: string extends Property
        ? unknown
        : Property extends keyof Type
            ? Type[Property]
            : Property extends `${number}`
                ? Type extends ReadonlyArray<infer ArrayType>
                    ? ArrayType
                    : unknown
                : Property extends `${infer Key}.${infer Rest}`
                    ? Key extends `${number}`
                        ? Type extends ReadonlyArray<infer ArrayType>
                            ? PropertyType<ArrayType, Rest>
                            : unknown
                        : Key extends keyof Type
                            ? Type[Key] extends Map<string, infer MapType>
                                ? MapType
                                : PropertyType<Type[Key], Rest>
                            : unknown
                    : unknown

    Type Parameters

    • Type
    • Property extends string
    diff --git a/docs/6.16/types/PullAllOperator.html b/docs/6.16/types/PullAllOperator.html new file mode 100644 index 00000000000..aef5c4f8b11 --- /dev/null +++ b/docs/6.16/types/PullAllOperator.html @@ -0,0 +1 @@ +PullAllOperator | mongodb

    Type Alias PullAllOperator<TSchema>

    PullAllOperator<TSchema>: {
        readonly [key in KeysOfAType<TSchema, ReadonlyArray<any>>]?: TSchema[key]
    } & NotAcceptedFields<TSchema, ReadonlyArray<any>> & {
        [key: string]: ReadonlyArray<any>;
    }

    Type Parameters

    • TSchema
    diff --git a/docs/6.16/types/PullOperator.html b/docs/6.16/types/PullOperator.html new file mode 100644 index 00000000000..8b37dc5b2b1 --- /dev/null +++ b/docs/6.16/types/PullOperator.html @@ -0,0 +1 @@ +PullOperator | mongodb

    Type Alias PullOperator<TSchema>

    PullOperator<TSchema>: {
        readonly [key in KeysOfAType<TSchema, ReadonlyArray<any>>]?: Partial<Flatten<TSchema[key]>> | FilterOperations<Flatten<TSchema[key]>>
    } & NotAcceptedFields<TSchema, ReadonlyArray<any>> & {
        [key: string]: FilterOperators<any> | any;
    }

    Type Parameters

    • TSchema
    diff --git a/docs/6.16/types/PushOperator.html b/docs/6.16/types/PushOperator.html new file mode 100644 index 00000000000..d0bbe4e64bc --- /dev/null +++ b/docs/6.16/types/PushOperator.html @@ -0,0 +1 @@ +PushOperator | mongodb

    Type Alias PushOperator<TSchema>

    PushOperator<TSchema>: {
        readonly [key in KeysOfAType<TSchema, ReadonlyArray<any>>]?: Flatten<TSchema[key]> | ArrayOperator<Flatten<TSchema[key]>[]>
    } & NotAcceptedFields<TSchema, ReadonlyArray<any>> & {
        [key: string]: ArrayOperator<any> | any;
    }

    Type Parameters

    • TSchema
    diff --git a/docs/6.16/types/ReadConcernLevel.html b/docs/6.16/types/ReadConcernLevel.html new file mode 100644 index 00000000000..c79c726e679 --- /dev/null +++ b/docs/6.16/types/ReadConcernLevel.html @@ -0,0 +1 @@ +ReadConcernLevel | mongodb

    Type Alias ReadConcernLevel

    ReadConcernLevel: typeof ReadConcernLevel[keyof typeof ReadConcernLevel]
    diff --git a/docs/6.16/types/ReadConcernLike.html b/docs/6.16/types/ReadConcernLike.html new file mode 100644 index 00000000000..08e612f00cb --- /dev/null +++ b/docs/6.16/types/ReadConcernLike.html @@ -0,0 +1 @@ +ReadConcernLike | mongodb

    Type Alias ReadConcernLike

    ReadConcernLike: ReadConcern | {
        level: ReadConcernLevel;
    } | ReadConcernLevel
    diff --git a/docs/6.16/types/ReadPreferenceLike.html b/docs/6.16/types/ReadPreferenceLike.html new file mode 100644 index 00000000000..edfa058a8d1 --- /dev/null +++ b/docs/6.16/types/ReadPreferenceLike.html @@ -0,0 +1 @@ +ReadPreferenceLike | mongodb

    Type Alias ReadPreferenceLike

    ReadPreferenceLike: ReadPreference | ReadPreferenceMode
    diff --git a/docs/6.16/types/ReadPreferenceMode.html b/docs/6.16/types/ReadPreferenceMode.html new file mode 100644 index 00000000000..a2eb9482d1e --- /dev/null +++ b/docs/6.16/types/ReadPreferenceMode.html @@ -0,0 +1 @@ +ReadPreferenceMode | mongodb

    Type Alias ReadPreferenceMode

    ReadPreferenceMode: typeof ReadPreferenceMode[keyof typeof ReadPreferenceMode]
    diff --git a/docs/6.16/types/RegExpOrString.html b/docs/6.16/types/RegExpOrString.html new file mode 100644 index 00000000000..504a6b34ee1 --- /dev/null +++ b/docs/6.16/types/RegExpOrString.html @@ -0,0 +1 @@ +RegExpOrString | mongodb

    Type Alias RegExpOrString<T>

    RegExpOrString<T>: T extends string
        ? BSONRegExp | RegExp | T
        : T

    Type Parameters

    • T
    diff --git a/docs/6.16/types/RemoveUserOptions.html b/docs/6.16/types/RemoveUserOptions.html new file mode 100644 index 00000000000..bb2738e6f38 --- /dev/null +++ b/docs/6.16/types/RemoveUserOptions.html @@ -0,0 +1 @@ +RemoveUserOptions | mongodb

    Type Alias RemoveUserOptions

    RemoveUserOptions: CommandOperationOptions
    diff --git a/docs/6.16/types/ResumeToken.html b/docs/6.16/types/ResumeToken.html new file mode 100644 index 00000000000..87abf40d073 --- /dev/null +++ b/docs/6.16/types/ResumeToken.html @@ -0,0 +1,3 @@ +ResumeToken | mongodb

    Type Alias ResumeToken

    ResumeToken: unknown

    Represents the logical starting point for a new ChangeStream or resuming a ChangeStream on the server.

    +
    diff --git a/docs/6.16/types/ReturnDocument.html b/docs/6.16/types/ReturnDocument.html new file mode 100644 index 00000000000..bba3aff969c --- /dev/null +++ b/docs/6.16/types/ReturnDocument.html @@ -0,0 +1 @@ +ReturnDocument | mongodb

    Type Alias ReturnDocument

    ReturnDocument: typeof ReturnDocument[keyof typeof ReturnDocument]
    diff --git a/docs/6.16/types/RunCommandOptions.html b/docs/6.16/types/RunCommandOptions.html new file mode 100644 index 00000000000..24e7fcef8ca --- /dev/null +++ b/docs/6.16/types/RunCommandOptions.html @@ -0,0 +1,4 @@ +RunCommandOptions | mongodb

    Type Alias RunCommandOptions

    RunCommandOptions: {
        readPreference?: ReadPreferenceLike;
        session?: ClientSession;
        timeoutMS?: number;
    } & BSONSerializeOptions

    Type declaration

    • OptionalreadPreference?: ReadPreferenceLike

      The read preference

      +
    • Optionalsession?: ClientSession

      Specify ClientSession for this command

      +
    • Optional ExperimentaltimeoutMS?: number

      Specifies the time an operation will run until it throws a timeout error

      +
    diff --git a/docs/6.16/types/RunCursorCommandOptions.html b/docs/6.16/types/RunCursorCommandOptions.html new file mode 100644 index 00000000000..7f90cf393a2 --- /dev/null +++ b/docs/6.16/types/RunCursorCommandOptions.html @@ -0,0 +1,18 @@ +RunCursorCommandOptions | mongodb

    Type Alias RunCursorCommandOptions

    RunCursorCommandOptions: {
        awaitData?: boolean;
        readPreference?: ReadPreferenceLike;
        session?: ClientSession;
        tailable?: boolean;
        timeoutMode?: CursorTimeoutMode;
        timeoutMS?: number;
    } & BSONSerializeOptions

    Type declaration

    • OptionalawaitData?: boolean
    • OptionalreadPreference?: ReadPreferenceLike
    • Optionalsession?: ClientSession
    • Optionaltailable?: boolean
    • Optional ExperimentaltimeoutMode?: CursorTimeoutMode

      Specifies how timeoutMS is applied to the cursor. Can be either 'cursorLifeTime' or 'iteration' +When set to 'iteration', the deadline specified by timeoutMS applies to each call of +cursor.next(). +When set to 'cursorLifetime', the deadline applies to the life of the entire cursor.

      +

      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.

      +
      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. +
      + +
    • Optional ExperimentaltimeoutMS?: number

      Specifies the time an operation will run until it throws a timeout error. Note that if +maxTimeMS is provided in the command in addition to setting timeoutMS in the options, then +the original value of maxTimeMS will be overwritten.

      +
    diff --git a/docs/6.16/types/SchemaMember.html b/docs/6.16/types/SchemaMember.html new file mode 100644 index 00000000000..0d8633a68a2 --- /dev/null +++ b/docs/6.16/types/SchemaMember.html @@ -0,0 +1 @@ +SchemaMember | mongodb

    Type Alias SchemaMember<T, V>

    SchemaMember<T, V>: {
        [P in keyof T]?: V
    } | {
        [key: string]: V;
    }

    Type Parameters

    • T
    • V
    diff --git a/docs/6.16/types/ServerApiVersion.html b/docs/6.16/types/ServerApiVersion.html new file mode 100644 index 00000000000..3b90baec060 --- /dev/null +++ b/docs/6.16/types/ServerApiVersion.html @@ -0,0 +1 @@ +ServerApiVersion | mongodb

    Type Alias ServerApiVersion

    ServerApiVersion: typeof ServerApiVersion[keyof typeof ServerApiVersion]
    diff --git a/docs/6.16/types/ServerEvents.html b/docs/6.16/types/ServerEvents.html new file mode 100644 index 00000000000..ee211513a4e --- /dev/null +++ b/docs/6.16/types/ServerEvents.html @@ -0,0 +1 @@ +ServerEvents | mongodb

    Type Alias ServerEvents

    ServerEvents: {
        closed(): void;
        descriptionReceived(description: ServerDescription): void;
        ended(): void;
        serverHeartbeatFailed(event: ServerHeartbeatFailedEvent): void;
        serverHeartbeatStarted(event: ServerHeartbeatStartedEvent): void;
        serverHeartbeatSucceeded(event: ServerHeartbeatSucceededEvent): void;
    } & ConnectionPoolEvents & EventEmitterWithState
    diff --git a/docs/6.16/types/ServerMonitoringMode.html b/docs/6.16/types/ServerMonitoringMode.html new file mode 100644 index 00000000000..ec0b4218d59 --- /dev/null +++ b/docs/6.16/types/ServerMonitoringMode.html @@ -0,0 +1 @@ +ServerMonitoringMode | mongodb

    Type Alias ServerMonitoringMode

    ServerMonitoringMode: typeof ServerMonitoringMode[keyof typeof ServerMonitoringMode]
    diff --git a/docs/6.16/types/ServerSessionId.html b/docs/6.16/types/ServerSessionId.html new file mode 100644 index 00000000000..be117286a19 --- /dev/null +++ b/docs/6.16/types/ServerSessionId.html @@ -0,0 +1 @@ +ServerSessionId | mongodb

    Type Alias ServerSessionId

    ServerSessionId: {
        id: Binary;
    }
    diff --git a/docs/6.16/types/ServerType.html b/docs/6.16/types/ServerType.html new file mode 100644 index 00000000000..1bcda0c6f86 --- /dev/null +++ b/docs/6.16/types/ServerType.html @@ -0,0 +1 @@ +ServerType | mongodb

    Type Alias ServerType

    ServerType: typeof ServerType[keyof typeof ServerType]
    diff --git a/docs/6.16/types/SetFields.html b/docs/6.16/types/SetFields.html new file mode 100644 index 00000000000..b785e6ddba8 --- /dev/null +++ b/docs/6.16/types/SetFields.html @@ -0,0 +1 @@ +SetFields | mongodb

    Type Alias SetFields<TSchema>

    SetFields<TSchema>: {
        readonly [key in KeysOfAType<TSchema, ReadonlyArray<any> | undefined>]?: OptionalId<Flatten<TSchema[key]>> | AddToSetOperators<OptionalId<Flatten<TSchema[key]>>[]>
    } & IsAny<TSchema[keyof TSchema], object, NotAcceptedFields<TSchema, ReadonlyArray<any> | undefined>> & {
        [key: string]: AddToSetOperators<any> | any;
    }

    Type Parameters

    • TSchema
    diff --git a/docs/6.16/types/SetProfilingLevelOptions.html b/docs/6.16/types/SetProfilingLevelOptions.html new file mode 100644 index 00000000000..6d8d973cfa2 --- /dev/null +++ b/docs/6.16/types/SetProfilingLevelOptions.html @@ -0,0 +1 @@ +SetProfilingLevelOptions | mongodb

    Type Alias SetProfilingLevelOptions

    SetProfilingLevelOptions: CommandOperationOptions
    diff --git a/docs/6.16/types/SeverityLevel.html b/docs/6.16/types/SeverityLevel.html new file mode 100644 index 00000000000..a41355d5ace --- /dev/null +++ b/docs/6.16/types/SeverityLevel.html @@ -0,0 +1 @@ +SeverityLevel | mongodb

    Type Alias SeverityLevel

    SeverityLevel: typeof SeverityLevel[keyof typeof SeverityLevel]
    diff --git a/docs/6.16/types/Sort.html b/docs/6.16/types/Sort.html new file mode 100644 index 00000000000..e81a4bde6ce --- /dev/null +++ b/docs/6.16/types/Sort.html @@ -0,0 +1 @@ +Sort | mongodb

    Type Alias Sort

    Sort:
        | string
        | Exclude<SortDirection, {
            $meta: string;
        }>
        | ReadonlyArray<string>
        | {
            [key: string]: SortDirection;
        }
        | ReadonlyMap<string, SortDirection>
        | ReadonlyArray<readonly [string, SortDirection]>
        | readonly [string, SortDirection]
    diff --git a/docs/6.16/types/SortDirection.html b/docs/6.16/types/SortDirection.html new file mode 100644 index 00000000000..fd6af0578a6 --- /dev/null +++ b/docs/6.16/types/SortDirection.html @@ -0,0 +1 @@ +SortDirection | mongodb

    Type Alias SortDirection

    SortDirection:
        | 1
        | -1
        | "asc"
        | "desc"
        | "ascending"
        | "descending"
        | {
            $meta: string;
        }
    diff --git a/docs/6.16/types/SortDirectionForCmd.html b/docs/6.16/types/SortDirectionForCmd.html new file mode 100644 index 00000000000..4769380f8ad --- /dev/null +++ b/docs/6.16/types/SortDirectionForCmd.html @@ -0,0 +1 @@ +SortDirectionForCmd | mongodb

    Type Alias SortDirectionForCmd

    SortDirectionForCmd: 1 | -1 | {
        $meta: string;
    }
    diff --git a/docs/6.16/types/SortForCmd.html b/docs/6.16/types/SortForCmd.html new file mode 100644 index 00000000000..fdc302846c7 --- /dev/null +++ b/docs/6.16/types/SortForCmd.html @@ -0,0 +1 @@ +SortForCmd | mongodb

    Type Alias SortForCmd

    SortForCmd: Map<string, SortDirectionForCmd>
    diff --git a/docs/6.16/types/Stream.html b/docs/6.16/types/Stream.html new file mode 100644 index 00000000000..b53cfd1c1ec --- /dev/null +++ b/docs/6.16/types/Stream.html @@ -0,0 +1 @@ +Stream | mongodb

    Type Alias Stream

    Stream: Socket | TLSSocket
    diff --git a/docs/6.16/types/StrictFilter.html b/docs/6.16/types/StrictFilter.html new file mode 100644 index 00000000000..b5a3fc4eec2 --- /dev/null +++ b/docs/6.16/types/StrictFilter.html @@ -0,0 +1 @@ +StrictFilter | mongodb

    Type Alias StrictFilter<TSchema>Experimental

    StrictFilter<TSchema>: Partial<TSchema> | {
        [Property in Join<NestedPaths<WithId<TSchema>, []>, ".">]?: Condition<PropertyType<WithId<TSchema>, Property>>
    } & RootFilterOperators<WithId<TSchema>>

    Type Parameters

    • TSchema
    diff --git a/docs/6.16/types/StrictMatchKeysAndValues.html b/docs/6.16/types/StrictMatchKeysAndValues.html new file mode 100644 index 00000000000..9648a0416d9 --- /dev/null +++ b/docs/6.16/types/StrictMatchKeysAndValues.html @@ -0,0 +1 @@ +StrictMatchKeysAndValues | mongodb

    Type Alias StrictMatchKeysAndValues<TSchema>Experimental

    StrictMatchKeysAndValues<TSchema>: Readonly<{
        [Property in Join<NestedPaths<TSchema, []>, ".">]?: PropertyType<TSchema, Property>
    } & {
        [Property in `${NestedPathsOfType<TSchema, any[]>}.$${`[${string}]` | ""}`]?: ArrayElement<PropertyType<TSchema, Property extends `${infer Key}.$${string}`
            ? Key
            : never>>
    } & {
        [Property in `${NestedPathsOfType<TSchema, Record<string, any>[]>}.$${`[${string}]` | ""}.${string}`]?: any
    } & Document>

    Type Parameters

    • TSchema
    diff --git a/docs/6.16/types/StrictUpdateFilter.html b/docs/6.16/types/StrictUpdateFilter.html new file mode 100644 index 00000000000..64888cc0029 --- /dev/null +++ b/docs/6.16/types/StrictUpdateFilter.html @@ -0,0 +1 @@ +StrictUpdateFilter | mongodb

    Type Alias StrictUpdateFilter<TSchema>Experimental

    StrictUpdateFilter<TSchema>: {
        $addToSet?: SetFields<TSchema>;
        $bit?: OnlyFieldsOfType<TSchema, NumericType | undefined, {
            and: IntegerType;
        } | {
            or: IntegerType;
        } | {
            xor: IntegerType;
        }>;
        $currentDate?: OnlyFieldsOfType<TSchema, Date | Timestamp, true | {
            $type: "date" | "timestamp";
        }>;
        $inc?: OnlyFieldsOfType<TSchema, NumericType | undefined>;
        $max?: StrictMatchKeysAndValues<TSchema>;
        $min?: StrictMatchKeysAndValues<TSchema>;
        $mul?: OnlyFieldsOfType<TSchema, NumericType | undefined>;
        $pop?: OnlyFieldsOfType<TSchema, ReadonlyArray<any>, 1 | -1>;
        $pull?: PullOperator<TSchema>;
        $pullAll?: PullAllOperator<TSchema>;
        $push?: PushOperator<TSchema>;
        $rename?: Record<string, string>;
        $set?: StrictMatchKeysAndValues<TSchema>;
        $setOnInsert?: StrictMatchKeysAndValues<TSchema>;
        $unset?: OnlyFieldsOfType<TSchema, any, "" | true | 1>;
    } & Document

    Type Parameters

    • TSchema
    diff --git a/docs/6.16/types/SupportedNodeConnectionOptions.html b/docs/6.16/types/SupportedNodeConnectionOptions.html new file mode 100644 index 00000000000..0bedde72293 --- /dev/null +++ b/docs/6.16/types/SupportedNodeConnectionOptions.html @@ -0,0 +1 @@ +SupportedNodeConnectionOptions | mongodb
    diff --git a/docs/6.16/types/SupportedSocketOptions.html b/docs/6.16/types/SupportedSocketOptions.html new file mode 100644 index 00000000000..95221227ef4 --- /dev/null +++ b/docs/6.16/types/SupportedSocketOptions.html @@ -0,0 +1 @@ +SupportedSocketOptions | mongodb

    Type Alias SupportedSocketOptions

    SupportedSocketOptions: Pick<TcpNetConnectOpts & {
        autoSelectFamily?: boolean;
        autoSelectFamilyAttemptTimeout?: number;
        keepAliveInitialDelay?: number;
    }, typeof LEGAL_TCP_SOCKET_OPTIONS[number]>
    diff --git a/docs/6.16/types/SupportedTLSConnectionOptions.html b/docs/6.16/types/SupportedTLSConnectionOptions.html new file mode 100644 index 00000000000..b752ba0fbbe --- /dev/null +++ b/docs/6.16/types/SupportedTLSConnectionOptions.html @@ -0,0 +1 @@ +SupportedTLSConnectionOptions | mongodb

    Type Alias SupportedTLSConnectionOptions

    SupportedTLSConnectionOptions: Pick<TLSConnectionOptions & {
        allowPartialTrustChain?: boolean;
    }, typeof LEGAL_TLS_SOCKET_OPTIONS[number]>
    diff --git a/docs/6.16/types/SupportedTLSSocketOptions.html b/docs/6.16/types/SupportedTLSSocketOptions.html new file mode 100644 index 00000000000..508dc075e17 --- /dev/null +++ b/docs/6.16/types/SupportedTLSSocketOptions.html @@ -0,0 +1 @@ +SupportedTLSSocketOptions | mongodb

    Type Alias SupportedTLSSocketOptions

    SupportedTLSSocketOptions: Pick<TLSSocketOptions, Extract<keyof TLSSocketOptions, typeof LEGAL_TLS_SOCKET_OPTIONS[number]>>
    diff --git a/docs/6.16/types/TagSet.html b/docs/6.16/types/TagSet.html new file mode 100644 index 00000000000..183751e7175 --- /dev/null +++ b/docs/6.16/types/TagSet.html @@ -0,0 +1 @@ +TagSet | mongodb

    Type Alias TagSet

    TagSet: {
        [key: string]: string;
    }
    diff --git a/docs/6.16/types/TopologyEvents.html b/docs/6.16/types/TopologyEvents.html new file mode 100644 index 00000000000..dcd2a68a6ab --- /dev/null +++ b/docs/6.16/types/TopologyEvents.html @@ -0,0 +1 @@ +TopologyEvents | mongodb

    Type Alias TopologyEvents

    TopologyEvents: {
        close(): void;
        error(error: Error): void;
        serverClosed(event: ServerClosedEvent): void;
        serverDescriptionChanged(event: ServerDescriptionChangedEvent): void;
        serverOpening(event: ServerOpeningEvent): void;
        timeout(): void;
        topologyClosed(event: TopologyClosedEvent): void;
        topologyDescriptionChanged(event: TopologyDescriptionChangedEvent): void;
        topologyOpening(event: TopologyOpeningEvent): void;
    } & Omit<ServerEvents, "connect"> & ConnectionPoolEvents & ConnectionEvents & EventEmitterWithState
    diff --git a/docs/6.16/types/TopologyType.html b/docs/6.16/types/TopologyType.html new file mode 100644 index 00000000000..dcea5e7234b --- /dev/null +++ b/docs/6.16/types/TopologyType.html @@ -0,0 +1 @@ +TopologyType | mongodb

    Type Alias TopologyType

    TopologyType: typeof TopologyType[keyof typeof TopologyType]
    diff --git a/docs/6.16/types/UpdateFilter.html b/docs/6.16/types/UpdateFilter.html new file mode 100644 index 00000000000..529b80eb4c9 --- /dev/null +++ b/docs/6.16/types/UpdateFilter.html @@ -0,0 +1 @@ +UpdateFilter | mongodb

    Type Alias UpdateFilter<TSchema>

    UpdateFilter<TSchema>: {
        $addToSet?: SetFields<TSchema>;
        $bit?: OnlyFieldsOfType<TSchema, NumericType | undefined, {
            and: IntegerType;
        } | {
            or: IntegerType;
        } | {
            xor: IntegerType;
        }>;
        $currentDate?: OnlyFieldsOfType<TSchema, Date | Timestamp, true | {
            $type: "date" | "timestamp";
        }>;
        $inc?: OnlyFieldsOfType<TSchema, NumericType | undefined>;
        $max?: MatchKeysAndValues<TSchema>;
        $min?: MatchKeysAndValues<TSchema>;
        $mul?: OnlyFieldsOfType<TSchema, NumericType | undefined>;
        $pop?: OnlyFieldsOfType<TSchema, ReadonlyArray<any>, 1 | -1>;
        $pull?: PullOperator<TSchema>;
        $pullAll?: PullAllOperator<TSchema>;
        $push?: PushOperator<TSchema>;
        $rename?: Record<string, string>;
        $set?: MatchKeysAndValues<TSchema>;
        $setOnInsert?: MatchKeysAndValues<TSchema>;
        $unset?: OnlyFieldsOfType<TSchema, any, "" | true | 1>;
    } & Document

    Type Parameters

    • TSchema
    diff --git a/docs/6.16/types/W.html b/docs/6.16/types/W.html new file mode 100644 index 00000000000..bacf4b14142 --- /dev/null +++ b/docs/6.16/types/W.html @@ -0,0 +1 @@ +W | mongodb

    Type Alias W

    W: number | "majority"
    diff --git a/docs/6.16/types/WithId.html b/docs/6.16/types/WithId.html new file mode 100644 index 00000000000..b1dbd6be6b5 --- /dev/null +++ b/docs/6.16/types/WithId.html @@ -0,0 +1,2 @@ +WithId | mongodb

    Type Alias WithId<TSchema>

    WithId<TSchema>: EnhancedOmit<TSchema, "_id"> & {
        _id: InferIdType<TSchema>;
    }

    Add an _id field to an object shaped type

    +

    Type Parameters

    • TSchema
    diff --git a/docs/6.16/types/WithSessionCallback.html b/docs/6.16/types/WithSessionCallback.html new file mode 100644 index 00000000000..1cbb8722b2f --- /dev/null +++ b/docs/6.16/types/WithSessionCallback.html @@ -0,0 +1 @@ +WithSessionCallback | mongodb

    Type Alias WithSessionCallback<T>

    WithSessionCallback<T>: ((session: ClientSession) => Promise<T>)

    Type Parameters

    • T = unknown
    diff --git a/docs/6.16/types/WithTransactionCallback.html b/docs/6.16/types/WithTransactionCallback.html new file mode 100644 index 00000000000..180a12c9478 --- /dev/null +++ b/docs/6.16/types/WithTransactionCallback.html @@ -0,0 +1 @@ +WithTransactionCallback | mongodb

    Type Alias WithTransactionCallback<T>

    WithTransactionCallback<T>: ((session: ClientSession) => Promise<T>)

    Type Parameters

    • T = any
    diff --git a/docs/6.16/types/WithoutId.html b/docs/6.16/types/WithoutId.html new file mode 100644 index 00000000000..564d9d4ec03 --- /dev/null +++ b/docs/6.16/types/WithoutId.html @@ -0,0 +1,2 @@ +WithoutId | mongodb

    Type Alias WithoutId<TSchema>

    WithoutId<TSchema>: Omit<TSchema, "_id">

    Remove the _id field from an object shaped type

    +

    Type Parameters

    • TSchema
    diff --git a/docs/6.16/variables/AuthMechanism-1.html b/docs/6.16/variables/AuthMechanism-1.html new file mode 100644 index 00000000000..077d9b2b491 --- /dev/null +++ b/docs/6.16/variables/AuthMechanism-1.html @@ -0,0 +1 @@ +AuthMechanism | mongodb

    Variable AuthMechanismConst

    AuthMechanism: Readonly<{
        MONGODB_AWS: "MONGODB-AWS";
        MONGODB_CR: "MONGODB-CR";
        MONGODB_DEFAULT: "DEFAULT";
        MONGODB_GSSAPI: "GSSAPI";
        MONGODB_OIDC: "MONGODB-OIDC";
        MONGODB_PLAIN: "PLAIN";
        MONGODB_SCRAM_SHA1: "SCRAM-SHA-1";
        MONGODB_SCRAM_SHA256: "SCRAM-SHA-256";
        MONGODB_X509: "MONGODB-X509";
    }> = ...
    diff --git a/docs/6.16/variables/AutoEncryptionLoggerLevel-1.html b/docs/6.16/variables/AutoEncryptionLoggerLevel-1.html new file mode 100644 index 00000000000..9b78337687a --- /dev/null +++ b/docs/6.16/variables/AutoEncryptionLoggerLevel-1.html @@ -0,0 +1 @@ +AutoEncryptionLoggerLevel | mongodb

    Variable AutoEncryptionLoggerLevelConst

    AutoEncryptionLoggerLevel: Readonly<{
        Error: 1;
        FatalError: 0;
        Info: 3;
        Trace: 4;
        Warning: 2;
    }> = ...
    diff --git a/docs/6.16/variables/BSON.BSONType-1.html b/docs/6.16/variables/BSON.BSONType-1.html new file mode 100644 index 00000000000..03f1aed191e --- /dev/null +++ b/docs/6.16/variables/BSON.BSONType-1.html @@ -0,0 +1 @@ +BSONType | mongodb

    Variable BSONTypeConst

    BSONType: Readonly<{
        array: 4;
        binData: 5;
        bool: 8;
        date: 9;
        dbPointer: 12;
        decimal: 19;
        double: 1;
        int: 16;
        javascript: 13;
        javascriptWithScope: 15;
        long: 18;
        maxKey: 127;
        minKey: -1;
        null: 10;
        object: 3;
        objectId: 7;
        regex: 11;
        string: 2;
        symbol: 14;
        timestamp: 17;
        undefined: 6;
    }>
    diff --git a/docs/6.16/variables/BSON.EJSON.html b/docs/6.16/variables/BSON.EJSON.html new file mode 100644 index 00000000000..0104bd08116 --- /dev/null +++ b/docs/6.16/variables/BSON.EJSON.html @@ -0,0 +1 @@ +EJSON | mongodb

    Variable EJSONConst

    EJSON: {
        deserialize: typeof EJSONdeserialize;
        parse: typeof parse;
        serialize: typeof EJSONserialize;
        stringify: typeof stringify;
    }
    diff --git a/docs/6.16/variables/BSON.LongWithoutOverridesClass.html b/docs/6.16/variables/BSON.LongWithoutOverridesClass.html new file mode 100644 index 00000000000..aa0940b3f30 --- /dev/null +++ b/docs/6.16/variables/BSON.LongWithoutOverridesClass.html @@ -0,0 +1 @@ +LongWithoutOverridesClass | mongodb

    Variable LongWithoutOverridesClassConst

    LongWithoutOverridesClass: LongWithoutOverrides
    diff --git a/docs/6.16/variables/BSON.onDemand-1.html b/docs/6.16/variables/BSON.onDemand-1.html new file mode 100644 index 00000000000..b660672f4b4 --- /dev/null +++ b/docs/6.16/variables/BSON.onDemand-1.html @@ -0,0 +1 @@ +onDemand | mongodb

    Variable onDemandConst Experimental

    onDemand: OnDemand
    diff --git a/docs/6.16/variables/BatchType-1.html b/docs/6.16/variables/BatchType-1.html new file mode 100644 index 00000000000..faa5d73810f --- /dev/null +++ b/docs/6.16/variables/BatchType-1.html @@ -0,0 +1 @@ +BatchType | mongodb

    Variable BatchTypeConst

    BatchType: Readonly<{
        DELETE: 3;
        INSERT: 1;
        UPDATE: 2;
    }> = ...
    diff --git a/docs/6.16/variables/CURSOR_FLAGS.html b/docs/6.16/variables/CURSOR_FLAGS.html new file mode 100644 index 00000000000..b1759cb39a6 --- /dev/null +++ b/docs/6.16/variables/CURSOR_FLAGS.html @@ -0,0 +1 @@ +CURSOR_FLAGS | mongodb

    Variable CURSOR_FLAGSConst

    CURSOR_FLAGS: readonly ["tailable", "oplogReplay", "noCursorTimeout", "awaitData", "exhaust", "partial"] = ...
    diff --git a/docs/6.16/variables/Compressor-1.html b/docs/6.16/variables/Compressor-1.html new file mode 100644 index 00000000000..0c03e080421 --- /dev/null +++ b/docs/6.16/variables/Compressor-1.html @@ -0,0 +1 @@ +Compressor | mongodb

    Variable CompressorConst

    Compressor: Readonly<{
        none: 0;
        snappy: 1;
        zlib: 2;
        zstd: 3;
    }> = ...
    diff --git a/docs/6.16/variables/CursorTimeoutMode-1.html b/docs/6.16/variables/CursorTimeoutMode-1.html new file mode 100644 index 00000000000..b2f680062a7 --- /dev/null +++ b/docs/6.16/variables/CursorTimeoutMode-1.html @@ -0,0 +1,15 @@ +CursorTimeoutMode | mongodb

    Variable CursorTimeoutModeConst Experimental

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

    Specifies how timeoutMS is applied to the cursor. Can be either 'cursorLifeTime' or 'iteration' +When set to 'iteration', the deadline specified by timeoutMS applies to each call of +cursor.next(). +When set to 'cursorLifetime', the deadline applies to the life of the entire cursor.

    +

    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.

    +
    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. +
    + +
    diff --git a/docs/6.16/variables/ExplainVerbosity-1.html b/docs/6.16/variables/ExplainVerbosity-1.html new file mode 100644 index 00000000000..6fa2ab409c4 --- /dev/null +++ b/docs/6.16/variables/ExplainVerbosity-1.html @@ -0,0 +1 @@ +ExplainVerbosity | mongodb

    Variable ExplainVerbosityConst

    ExplainVerbosity: Readonly<{
        allPlansExecution: "allPlansExecution";
        executionStats: "executionStats";
        queryPlanner: "queryPlanner";
        queryPlannerExtended: "queryPlannerExtended";
    }> = ...
    diff --git a/docs/6.16/variables/GSSAPICanonicalizationValue-1.html b/docs/6.16/variables/GSSAPICanonicalizationValue-1.html new file mode 100644 index 00000000000..e3b590b68da --- /dev/null +++ b/docs/6.16/variables/GSSAPICanonicalizationValue-1.html @@ -0,0 +1 @@ +GSSAPICanonicalizationValue | mongodb

    Variable GSSAPICanonicalizationValueConst

    GSSAPICanonicalizationValue: Readonly<{
        forward: "forward";
        forwardAndReverse: "forwardAndReverse";
        none: "none";
        off: false;
        on: true;
    }> = ...
    diff --git a/docs/6.16/variables/LEGAL_TCP_SOCKET_OPTIONS.html b/docs/6.16/variables/LEGAL_TCP_SOCKET_OPTIONS.html new file mode 100644 index 00000000000..fd5a07838d0 --- /dev/null +++ b/docs/6.16/variables/LEGAL_TCP_SOCKET_OPTIONS.html @@ -0,0 +1 @@ +LEGAL_TCP_SOCKET_OPTIONS | mongodb

    Variable LEGAL_TCP_SOCKET_OPTIONSConst

    LEGAL_TCP_SOCKET_OPTIONS: readonly ["autoSelectFamily", "autoSelectFamilyAttemptTimeout", "keepAliveInitialDelay", "family", "hints", "localAddress", "localPort", "lookup"] = ...
    diff --git a/docs/6.16/variables/LEGAL_TLS_SOCKET_OPTIONS.html b/docs/6.16/variables/LEGAL_TLS_SOCKET_OPTIONS.html new file mode 100644 index 00000000000..2170f2a8247 --- /dev/null +++ b/docs/6.16/variables/LEGAL_TLS_SOCKET_OPTIONS.html @@ -0,0 +1 @@ +LEGAL_TLS_SOCKET_OPTIONS | mongodb

    Variable LEGAL_TLS_SOCKET_OPTIONSConst

    LEGAL_TLS_SOCKET_OPTIONS: readonly ["allowPartialTrustChain", "ALPNProtocols", "ca", "cert", "checkServerIdentity", "ciphers", "crl", "ecdhCurve", "key", "minDHSize", "passphrase", "pfx", "rejectUnauthorized", "secureContext", "secureProtocol", "servername", "session"] = ...
    diff --git a/docs/6.16/variables/MONGO_CLIENT_EVENTS.html b/docs/6.16/variables/MONGO_CLIENT_EVENTS.html new file mode 100644 index 00000000000..af9402a52f2 --- /dev/null +++ b/docs/6.16/variables/MONGO_CLIENT_EVENTS.html @@ -0,0 +1 @@ +MONGO_CLIENT_EVENTS | mongodb

    Variable MONGO_CLIENT_EVENTSConst

    MONGO_CLIENT_EVENTS: readonly ["connectionPoolCreated", "connectionPoolReady", "connectionPoolCleared", "connectionPoolClosed", "connectionCreated", "connectionReady", "connectionClosed", "connectionCheckOutStarted", "connectionCheckOutFailed", "connectionCheckedOut", "connectionCheckedIn", "commandStarted", "commandSucceeded", "commandFailed", "serverOpening", "serverClosed", "serverDescriptionChanged", "topologyOpening", "topologyClosed", "topologyDescriptionChanged", "error", "timeout", "close", "serverHeartbeatStarted", "serverHeartbeatSucceeded", "serverHeartbeatFailed"] = ...
    diff --git a/docs/6.16/variables/MongoErrorLabel-1.html b/docs/6.16/variables/MongoErrorLabel-1.html new file mode 100644 index 00000000000..7baeadd4aaa --- /dev/null +++ b/docs/6.16/variables/MongoErrorLabel-1.html @@ -0,0 +1 @@ +MongoErrorLabel | mongodb

    Variable MongoErrorLabelConst

    MongoErrorLabel: Readonly<{
        HandshakeError: "HandshakeError";
        InterruptInUseConnections: "InterruptInUseConnections";
        NoWritesPerformed: "NoWritesPerformed";
        PoolRequstedRetry: "PoolRequstedRetry";
        ResetPool: "ResetPool";
        ResumableChangeStreamError: "ResumableChangeStreamError";
        RetryableWriteError: "RetryableWriteError";
        TransientTransactionError: "TransientTransactionError";
        UnknownTransactionCommitResult: "UnknownTransactionCommitResult";
    }> = ...
    diff --git a/docs/6.16/variables/MongoLoggableComponent-1.html b/docs/6.16/variables/MongoLoggableComponent-1.html new file mode 100644 index 00000000000..9188387acde --- /dev/null +++ b/docs/6.16/variables/MongoLoggableComponent-1.html @@ -0,0 +1 @@ +MongoLoggableComponent | mongodb

    Variable MongoLoggableComponentConst

    MongoLoggableComponent: Readonly<{
        CLIENT: "client";
        COMMAND: "command";
        CONNECTION: "connection";
        SERVER_SELECTION: "serverSelection";
        TOPOLOGY: "topology";
    }> = ...
    diff --git a/docs/6.16/variables/ProfilingLevel-1.html b/docs/6.16/variables/ProfilingLevel-1.html new file mode 100644 index 00000000000..1d0dcc40542 --- /dev/null +++ b/docs/6.16/variables/ProfilingLevel-1.html @@ -0,0 +1 @@ +ProfilingLevel | mongodb

    Variable ProfilingLevelConst

    ProfilingLevel: Readonly<{
        all: "all";
        off: "off";
        slowOnly: "slow_only";
    }> = ...
    diff --git a/docs/6.16/variables/ReadConcernLevel-1.html b/docs/6.16/variables/ReadConcernLevel-1.html new file mode 100644 index 00000000000..fee73cf7321 --- /dev/null +++ b/docs/6.16/variables/ReadConcernLevel-1.html @@ -0,0 +1 @@ +ReadConcernLevel | mongodb

    Variable ReadConcernLevelConst

    ReadConcernLevel: Readonly<{
        available: "available";
        linearizable: "linearizable";
        local: "local";
        majority: "majority";
        snapshot: "snapshot";
    }> = ...
    diff --git a/docs/6.16/variables/ReadPreferenceMode-1.html b/docs/6.16/variables/ReadPreferenceMode-1.html new file mode 100644 index 00000000000..1d9b570a1dc --- /dev/null +++ b/docs/6.16/variables/ReadPreferenceMode-1.html @@ -0,0 +1 @@ +ReadPreferenceMode | mongodb

    Variable ReadPreferenceModeConst

    ReadPreferenceMode: Readonly<{
        nearest: "nearest";
        primary: "primary";
        primaryPreferred: "primaryPreferred";
        secondary: "secondary";
        secondaryPreferred: "secondaryPreferred";
    }> = ...
    diff --git a/docs/6.16/variables/ReturnDocument-1.html b/docs/6.16/variables/ReturnDocument-1.html new file mode 100644 index 00000000000..e119b81acd4 --- /dev/null +++ b/docs/6.16/variables/ReturnDocument-1.html @@ -0,0 +1 @@ +ReturnDocument | mongodb

    Variable ReturnDocumentConst

    ReturnDocument: Readonly<{
        AFTER: "after";
        BEFORE: "before";
    }> = ...
    diff --git a/docs/6.16/variables/ServerApiVersion-1.html b/docs/6.16/variables/ServerApiVersion-1.html new file mode 100644 index 00000000000..8e272f2c2c3 --- /dev/null +++ b/docs/6.16/variables/ServerApiVersion-1.html @@ -0,0 +1 @@ +ServerApiVersion | mongodb

    Variable ServerApiVersionConst

    ServerApiVersion: Readonly<{
        v1: "1";
    }> = ...
    diff --git a/docs/6.16/variables/ServerMonitoringMode-1.html b/docs/6.16/variables/ServerMonitoringMode-1.html new file mode 100644 index 00000000000..effa256be12 --- /dev/null +++ b/docs/6.16/variables/ServerMonitoringMode-1.html @@ -0,0 +1 @@ +ServerMonitoringMode | mongodb

    Variable ServerMonitoringModeConst

    ServerMonitoringMode: Readonly<{
        auto: "auto";
        poll: "poll";
        stream: "stream";
    }> = ...
    diff --git a/docs/6.16/variables/ServerType-1.html b/docs/6.16/variables/ServerType-1.html new file mode 100644 index 00000000000..234fa31bfe8 --- /dev/null +++ b/docs/6.16/variables/ServerType-1.html @@ -0,0 +1,2 @@ +ServerType | mongodb

    Variable ServerTypeConst

    ServerType: Readonly<{
        LoadBalancer: "LoadBalancer";
        Mongos: "Mongos";
        PossiblePrimary: "PossiblePrimary";
        RSArbiter: "RSArbiter";
        RSGhost: "RSGhost";
        RSOther: "RSOther";
        RSPrimary: "RSPrimary";
        RSSecondary: "RSSecondary";
        Standalone: "Standalone";
        Unknown: "Unknown";
    }> = ...

    An enumeration of server types we know about

    +
    diff --git a/docs/6.16/variables/SeverityLevel-1.html b/docs/6.16/variables/SeverityLevel-1.html new file mode 100644 index 00000000000..b46c708a667 --- /dev/null +++ b/docs/6.16/variables/SeverityLevel-1.html @@ -0,0 +1,3 @@ +SeverityLevel | mongodb

    Variable SeverityLevelConst

    SeverityLevel: Readonly<{
        ALERT: "alert";
        CRITICAL: "critical";
        DEBUG: "debug";
        EMERGENCY: "emergency";
        ERROR: "error";
        INFORMATIONAL: "info";
        NOTICE: "notice";
        OFF: "off";
        TRACE: "trace";
        WARNING: "warn";
    }> = ...

    Severity levels align with unix syslog. +Most typical driver functions will log to debug.

    +
    diff --git a/docs/6.16/variables/TopologyType-1.html b/docs/6.16/variables/TopologyType-1.html new file mode 100644 index 00000000000..beb19b58538 --- /dev/null +++ b/docs/6.16/variables/TopologyType-1.html @@ -0,0 +1,2 @@ +TopologyType | mongodb

    Variable TopologyTypeConst

    TopologyType: Readonly<{
        LoadBalanced: "LoadBalanced";
        ReplicaSetNoPrimary: "ReplicaSetNoPrimary";
        ReplicaSetWithPrimary: "ReplicaSetWithPrimary";
        Sharded: "Sharded";
        Single: "Single";
        Unknown: "Unknown";
    }> = ...

    An enumeration of topology types we know about

    +
    diff --git a/docs/Next/assets/navigation.js b/docs/Next/assets/navigation.js index 2729069099f..5fe29e2b1d0 100644 --- a/docs/Next/assets/navigation.js +++ b/docs/Next/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,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" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE62d23LjuLWG38X7dmYn3XNIpu/cttyj+CCX5e6+SKW6YBKWsE2BCgh5rKTy7rtAUiQOC2stsnOn0vrx/SRI4gzy7/8+s/LNnn04+6i0MMezH872wm7PPpzt6vJQyeZ/t3ZX/c8QfFG6PPvw87vffv7pzz//54cx9Xp19yA3i7d9juALMMr6uHuqK4QyCDDK43EvEUYfzhEu6jKXug/lUl5+fJDPmaSnWDatLNROVO/e/zUH8AU5SikbaZSo1L9ypxAqskdTF4ed1DZ3LGM4Tzg8VbmDGIK51Ettf3qfSXyK5dLe1HqTSdqHcilvxdu1zD0FQzCbWmkk9SmYS716+j9Z2GWZSe+FcwTqynOu+6PaycaKXe5B9uM5xufPy8tM8j6EPbtJyj+5f9vkY8ofzopKNM3ZhzPblD+q5kf5ZqXRwkmKrapKI/XZh79ni7c29QndBUOHd+//mveIjnhhTG1y7FN8Pn71/NxIS5l4qvlWcRmeuHSC7zA4aKt2kjoZXzbfLK5LEptOMN/gi6gOEuG38e/AS9OoWlOZ5cvmmYUVXmDgQvOgUV0YUNvYTCxQTYbsQTDTIKq3QngbnAeOqrSA28bmYcPaLqC60DxoXBEG2C44ExzVkSG4Dc4Dp9VngD6F58GBWjGgD/F5+LDCDMguNLMEaWu1xZuVupRetihtpXkWRVj7nXSh1/tffp3hdSM3ojhyHTv1TN+hSmKcZ6L9b3mS55tJMd+/q7h45xxq53m6WoB281XzfNp64Ua9yLzJIJnpMNQO9Pmk2rmeQ8t7tbeq1g3mGWtneib9t8SpV8zlu4qQkYeBbp5XWznSVoFsnpOrMGkjXzXPp6tBaadQN9OrrVQZXoFunteplqXdYuX3+eFFhq+a57NmP7+xcp7f0J6gMzKRfk8Nvpb/PEhdeHlpj/uw2j5JIps///aXd7+8Z1dg4QCdb9IH5+MvRFUcKmFld9nX0FXzDPPy+Yew+JvrkCOmvmC+jSuHviq7rQ929SqNUaWE7SDhfNuVvpQ7oUvQ6hScjx9uaPycUtl8S9fITp80z8wX/Ddv/FdhlHiq4pv/x3ehyU8TbrssvI3O4kK3z0WbLOeVTTHLv05uuMjuJJiZb0VaBIxWzwddtM9pZwVoQ89fkbFJapw+8vI03+uxtkaKHcepU87yo8/o+85nSO1urY+H52dpznW51KV8ox3TNDOPwS5193dHQ+8WUD3B9x+e8/lTY40o7MXBNNB4YBhPxgx8UrlTGgC4v9F0m42RG+HOL3sQsQTjfRS22ALjHu5vNN2helntpWltPooGGqyLJRTvq1FWPsjmUFmY5gkw1oXQhayq1vexfpFAPicSlLcVepM8vgPKi6KUSkltF7owx7bRAZAiBU1by6ZBUH0Y5dRVJYvM8QwxnLBz5f6VUJUsF69Bf3ckxRoGcW2FsRTSF3GYh6KQsiSpgQznat3l0cVWFi+yXOosGlZOoq8Olos/SSfwVwdLXEZEPs2HuriYnulU1Q3HYJQxuUYK1pF7Oh75vq6ri0oKw6DH2ikOrHyJpBP4zPyJtXyH21orWxulNyyTSM73eZCiPLIsRiWPziPzqJdPKePyCUuxeNtXQmnXeM+1IRIJxrtSusyBxhhF6JoKtWlgyBDGOJ+MKq/WHw/FiwRy1o9yKe4a5Gp+WMclt40ZDtoTYuzf68ael6WRDZCDXhBj3KjGjrV+k7uooIzitu19iTIDCcVbS2GKLYMKCDH2ba039fn9MjPlH4Rpztc1yunDNOdfB5NbsREJSFbbtn+QizdZHGx+bUNeSzuc2uooOhCRTL+ZjWETHU1u28o5XBtkMoZT6u4y9DCzCaZ6TXCZx+fcJ2ga2rHe7YVVT6pS9ojaJEKabWQptVWiAorFWMGgHfe2fdaub9cPbhi+ya0Kw/U8p659dCmscNNClE+qnuLS9ztlOZbsTMdcSp47aTKBtdSvolLludm006okGtLznMbLeSftH7V5cWPh9YG2RBPS3l058bYVh8Y1nDE3QMrkL/XnBi9XIhnJvfw43ht3YiebvSiAIaO8luFAcyfQZFHv9qYbP8FyIhXSbKNeJVo5eAqShnGYhLe9MrJc0ycLKEn6p4t7DHkK05y2RXyxPegXlBfJmFy6XZHoSPKEwmhWOXQtzZM0dYOBAw1JvFVNo/TGqxAxdkbNdbmUezeXpwu0YoPFpEdftmJkX8LlMQr5OaX6XW37Xj9epCc6krxaXl5gxCFOk04j+Yw8ALWkw70weK0zCkgWvsY9kZC8tTSv0vTjYQg00THJNHMKbS0ZDThISvOtqOS9UTu3eBSDxzqafGysREtgT0HSHoWqxsErjAooaXq9r6t6c6TvB0BJ043QjSCvXywjuZ+1fNu3ZUd36R9ks681/sihaUjHrmtb60Ia9FQSHUZemVIaWQaziykXUmFUN37XH0EK84IU497IZ2nC9Vs+ZoyjpIPuZ6JyA1uxAqP1hZLYi7bjrCTQE041DCI2k5BIaN6lbAqjMpOjiWQSrxsVwo81I6d9fpfC2Ccp8MmzvHaCAz5thoineBBzpKic9lntpc5P3aQampidBQ/CKKdt1uP3XyzBeFGxD58qIOIw0aMERBOZ+JNCJOB44dcfUqHUsRYEYGMQZRz3/fEvdspaCRS3iQTjfdY1q46CdRjZryhTnh/lUjLV8qQaGRuG5o07h+umsAXeoDJaDvrLr8CCKXTZeCziAIflVRxwLEYNmqMuLlWzrxsR7IL0uaEGxR3sFmYc7JZKeCuLrdCq2d2bei9N2HaIWICWwNfjWic0EyEliv66Bof9fWYgIWCj+bU8okcKawn89e363tSvqpTmotbPanOIS4zQIqdHbdr5QfZ55NSYRbvRjbtJg9yjAa0NHMrIqLDx2bCWiUeOORJhQH8K0g1l39YluhUM0bNtuqkftksgn2bSTqRPdArScO0uZSUnnFMoZ5v0+nHKIdwInDMDk0033e0yj3lePtUk2OpNOCQ7v2n88JyB7VLCD0rMPgBT791c55NoJtwkQKJJhpOMZhhMe7qSFFyrpW6ksWyfUM43aWc1phRMaRKumZvbW4ezfxmPQclFY/UCoONiH+Sz0nIsQdZbYcpreWRnFgXgH4gWO/41CuV8k30liikugZ5v07hcGDNlgmEmJdd6PdM4k45tu69UvCg85zRIufDP+0mPbyhHTdBFTD6eXMKEgtFnF5ROgMd7VfJsaNMKhO4aMbdCH2/rUlYIOlJy0SsteeSTkAsm88KX0dCx8xGsajr1e+jLygNMOZD+1xTrMMkUsykuM/AP8g8j9u7u+Y6MpSDfdUDk/USmpe27Zg3jkQiFE8DkWURKGn0rrSiFFQjzJOHD6KseKWl0X38zMjdS0uh+QJ8+6FBIg7vqi1P6RkoumpEboZALJu8zX0ZD2zqLOtJRhAPrhqiFR0ECGvfllnJvZOF2CwUvmqjc4kbjLz3FvXJy/BTaVG4xC0Z1cRRT9xtO0SOMRBSwO4mlfq6zuFHCg1GHx8+3boJ66OTjYFCL408bpXBwpOIh3a4uHtZTMtAMJgt20EN3vMGZgJJEk0QOqG12MW8rWEvj+109NDsUEuB+WuDUnMlyYx2Kbad/GAMKqQ7D9i0eENXH0ORP2LEMURyxtgK/CUMJCmP0fyb0fBh9Hn5vp1di5+kraBRSaXM7S53O5a7MdtAjDYprF55na5MxjEPqPe+xB5UYeqFLRuMvUaFIN6BAjV3HIhTYWLVz7ZRx2J4oUdEUqFW3S3eoOxELSMlAM5gM2JWqbLuoJ97g69EiDY7T5UrLc13Sj2RGy8OfeiYsfijmGfSNfRY/0JJ4Cklj3M4M7nxxRovivR3OKDrVcbHjnmyuQZJitpV71dGDfFVNrkhhp+YegrdNnHu6aRLarN1ag5DbOI25UpmVLWMYg/wuyw363PgCDLQs77PVXR8jkocLo3OgUIUi2/k8okKKRSTQnYjZkd2wjBbHuxEs1xxD2jOxiAaijTb+eNygxM86FLGA5NmyBvWub5f8YjYnpgwmLTDCEuBGa7zD5AswUPR2CSxDYCkFPy0AINGxkA1G7g1Ah2LrQlSTrh+aArfaZIAbIpnbll/rdsD1VZp290A3RIhmMJ0Os72tS/WMFTm+AAcN7y/ADjeV0dBxgSFNTrQk/vLjTb1xVXh2lWgqI6H+rkjyoAExaUBCeSD3RicC5UkwmNsCeSGq6kkUL/fCiB0MTGUUFG0S+AIUxBk8nTJqev9yJQpbG3jIaIiiCFO/ofWUL8BAD27lAAbyBSgo2Fl1ZWq0CZxV8y3ca8z5Fp6ab8HHs9BuzQ6O9BQ4ip7YmzClx+hj83vWrrSnTtNTTJ5ueqhryxnMAHTYYXtvqKIa/rAUh7vm0WlfVT5nAB2OdcLzvcrA+iiKiLdUoYeXEWMGbkbOLTSXDW88EtGjNummKNQlK+eY9F8aQ8m9BsWNW6PQY01kGLRf/kXcwomKRuITAhMm4xnT8PwJeHr0jj1mR87ic+fvOx0+IRBpMNyXfjUu7/nJqjGLZKvZZW51C6ichEYyOKPl4rFsAXRc7Fpaq/SG5p6EGPj8qTZRZ6H7vsIQiFJ331UICP7uu3YlafJlCEhDcotCuheIXSlZlSkxiJKssnys19ICNXSPiwUksWrfBW/Vq4S+mRKFSZo+ppuUEiYkYpCjZadRKTewIRmDHq3SHXDQotw0vTHiuKiiYqlneDEW53TtQNApSJL8TYsJyQ8ySN4OxcWbNemSugGbUU7zuKk3G2lu5CtwfXNC0sHfE3kaPkrokIgk929AJEaxegdMTDm1LywFv2x0CpAEZf9Qjeya7wnFD5Kk/lMy55US4Ad0hiBFOg08xJDT/2R6YO9VwgI0U7hwbZAqSCajCJtTfsWrhqM1y7BFVj7VbV2DE52wVyCe6vQIjDbCNo+5scaMx+m9f/CFTiUktd3PmMF5MQanfQNjWh2MET7DbQ/Lc1yUZulSQSXbEGAQ+tWFudwJ43yeW61IMUcNyV1f3Syub9fIPZcoSGbbbryqxCZhDREeo3/73G3wZW0f5Qko4qVqrNLA+s2OF4VJmrcNNUdMJRxqbkHkCEVXQibMhd66T+WUq51Kagw/RnK8d6e41Q1t7zMBQiIWuQEHHTxqkx9vSIndwqYv0jzVjbLHBBjFp/LCL2XCTOA7mQkXbqLw2ib+6CR0p8RxklcJa2WS9/3fVOpPF4w56o6ISEkXqaVRhZuBdb8Schgmad5CGrhETRUkc70+v19eCF1rVbjXY7Tn9UVUh+SGQaSUy+8qbf25/6h08ahz+zb2IkFlZFPp4bIcGA0sz8lwlYm/cuUTT1EWa72XhXpWBXh7pgqa+SzNsoT6LF6Ipli5kQamDCGS0pzrpLhr/6RS/q1WSV64/6h01/LYrJ7PoeP2QjzKym7hHIjCFM37FEmmHk0VHGbwIRKEDOko/q3r3rrzPNdlWwgk5FRBMsclD3ABlwhYxHa06EY8pd26KMyiufGN9v2tp7UkIDRRMdhu/UD2vMcgRbqT7vX798JuE44XmkBZPUP3eCIgibX2P8qdGxbIyGi6xQd1EwFJPOxc9Qye+xiiKP4yjqv+Q6ExDtKQXC1X5rY2ybENAZpQHbucgC9wHCd5/ku4E5gfpElOKapl8mHmMcJlfNaVbBr3BQz3JYE8MdZR/HtTP6tK6Q04JBpGp7EyBTUoYpDdm/GO0PX1YyTnUFXnVZUbBY/CHBqG4nOabZ4zxiiO97pl8GrG8Sk8oOsVhTm0cGkPBAwV05jQgEWqoJmbxdt+5bYSKp2MpYRRmrWrX+XnBlhBcsJFApro1uFEX+c9sYYQTbEHA7xp5wTyoyTrkN1I1eNiAYfYjjPRXEBG0dfFVu7Erdw9pV1ZP0ZyTkt1kpUlPSuK83hww8mP8TjjxzuhpwLS8Lj9QHVaAUVhHg0qz8cIzbBwG2kIMAisSiuno/nt+uwjWBwHQZJUm+Q5df9x0mU78UFwEumqNhe79B5IJRxqHsZkRB8D7dMDX/4E06rCwiOCfozHoXuTOR2P361Awo7WV5DMw35fuzfd39WlRN4K0fNRNdsLndCDVWz2482afxqQeIoT70RiIeXwKDZrmTzp3b9k2n4ZI1yHhFEuCyqh/RjFwe7YKffq1zjxVzKFstu0mur+5aStDxZO3gY4hL4yzC1CACQcqre0FCMDspnrel6FUW4MKFrb8+O7kPdThKIW3QRYWIxaACtWRuQQRBHQBPjIGKM45PPDevXw7erm/NMaxHhxDJOfevVYsQg9svx83EiMNSiQNc0yshE5anOz+HR+8+3x4v7benVxvXj8trp/XK7uwNzNaWn8zZqPT7QI/nZ192n17eJmubh7/Lb4srh7BMmADIPmBoA9YChBc5gaAY6oiRKF54aURmioQGH5MY0RF2tIYG7IIESGKgIK96d9oK9AYfmO5YiLNQxgrkcYQ0MdA5wrg8coAQH7SD7HE6AouNEykvw4Cir66XHpikdVKPsgm/pgCrdZQmyipbjP/VB38ydGstD015//84//B4vlkATIpgAA" \ No newline at end of file diff --git a/docs/Next/assets/search.js b/docs/Next/assets/search.js index 83d29490cdf..afa2c4b18b6 100644 --- a/docs/Next/assets/search.js +++ b/docs/Next/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/categories/index.xml b/docs/categories/index.xml index 3f54c6ee7c1..e8d6887ccb7 100644 --- a/docs/categories/index.xml +++ b/docs/categories/index.xml @@ -4,7 +4,7 @@ Categories on MongoDB Node.js Driver /node-mongodb-native/categories/ Recent content in Categories on MongoDB Node.js Driver - Hugo -- gohugo.io + Hugo en-us diff --git a/docs/index.html b/docs/index.html index f9ce3f8ee7c..8d06efbaf06 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,7 +1,7 @@ - + @@ -155,7 +155,22 @@

    Releases

    - 6.15 Driver + 6.16 Driver + + + + Reference + + + | + + API + + + + + + 6.15 Driver diff --git a/docs/index.xml b/docs/index.xml index 12ceb7dcf4a..a7874ae5b97 100644 --- a/docs/index.xml +++ b/docs/index.xml @@ -4,7 +4,7 @@ MongoDB Node.js Driver /node-mongodb-native/ Recent content on MongoDB Node.js Driver - Hugo -- gohugo.io + Hugo en-us diff --git a/docs/tags/index.xml b/docs/tags/index.xml index cfa1bc99ebb..666ebe0f57c 100644 --- a/docs/tags/index.xml +++ b/docs/tags/index.xml @@ -4,7 +4,7 @@ Tags on MongoDB Node.js Driver /node-mongodb-native/tags/ Recent content in Tags on MongoDB Node.js Driver - Hugo -- gohugo.io + Hugo en-us diff --git a/docs/versions.json b/docs/versions.json index 923ca2c7bda..82cdd99388f 100644 --- a/docs/versions.json +++ b/docs/versions.json @@ -2,6 +2,9 @@ { "version": "Next" }, + { + "version": "6.16" + }, { "version": "6.15" }, diff --git a/etc/docs/template/data/releases.toml b/etc/docs/template/data/releases.toml index f468a181aee..13b2de527d4 100644 --- a/etc/docs/template/data/releases.toml +++ b/etc/docs/template/data/releases.toml @@ -1,4 +1,4 @@ -current = "6.15 Driver" +current = "6.16 Driver" mongoDBManual = "https://www.mongodb.com/docs/drivers/node/" [[versions]] @@ -9,8 +9,15 @@ usesMongoDBManual = true tag = "Next" [[versions]] -version = "6.15 Driver" +version = "6.16 Driver" status = "latest" +api = "./6.16" +usesMongoDBManual = true +tag = "6.16" + +[[versions]] +version = "6.15 Driver" +status = "supported" api = "./6.15" usesMongoDBManual = true tag = "6.15" diff --git a/etc/docs/template/static/versions.json b/etc/docs/template/static/versions.json index 923ca2c7bda..82cdd99388f 100644 --- a/etc/docs/template/static/versions.json +++ b/etc/docs/template/static/versions.json @@ -2,6 +2,9 @@ { "version": "Next" }, + { + "version": "6.16" + }, { "version": "6.15" },