Connection

Connection

Model

QueryCursor

AggregationCursor

Virtualtype

SchemaArray

SubdocumentPath


Parameters
  • base «Mongoose» a mongoose instance
Inherits:

Connection constructor

For practical reasons, a Connection equals a Db.


Connection.prototype.asPromise()

Returns:
  • «Promise»

Returns a promise that resolves when this connection successfully connects to MongoDB, or rejects if this connection failed to connect.

Example:


Connection.prototype.client

Type:
  • «property»

The MongoClient instance this connection uses to talk to MongoDB. Mongoose automatically sets this property when the connection is opened.


Parameters
  • [force] «Boolean» optional

  • [callback] «Function» optional

Returns:
  • «Promise»

Closes the connection


Parameters
  • name «String» of the collection

  • [options] «Object» optional collection options

Returns:
  • «Collection» collection instance

Retrieves a collection, creating it if not cached.

Not typically needed by applications. Just talk to your collection through your model.


Type:
  • «property»

A hash of the collections associated with this connection


Connection.prototype.config

Type:
  • «property»

A hash of the global options that are associated with this connection


Parameters
  • collection «string» The collection to create

  • [options] «Object» see

  • [callback] «Function»

Returns:
  • «Promise»

Helper for . Will explicitly create the given collection with specified options. Used to create and views from mongoose.

Options are passed down without modification to the


Type:
  • «property»

Connection.prototype.deleteModel()

Parameters
  • name «String|RegExp» if string, the name of the model to remove. If regexp, removes all models whose name matches the regexp.
Returns:
  • «Connection» this

Removes the model named name from this connection, if it exists. You can use this function to clean up any models you created in your tests to prevent OverwriteModelErrors.

Example:

  1. conn.model('User', new Schema({ name: String }));
  2. console.log(conn.model('User')); // Model object
  3. conn.deleteModel('User');
  4. console.log(conn.model('User')); // undefined
  5. // Usually useful in a Mocha `afterEach()` hook
  6. afterEach(function() {
  7. conn.deleteModel(/.+/); // Delete every model
  8. });

Parameters
  • collection «string» The collection to delete

  • [callback] «Function»

Returns:
  • «Promise»

Helper for dropCollection(). Will delete the given collection, including all documents and indexes.


Parameters
  • [callback] «Function»
Returns:
  • «Promise»

Helper for dropDatabase(). Deletes the given database, including all collections, documents, and indexes.

Example:

  1. const conn = mongoose.createConnection('mongodb://localhost:27017/mydb');
  2. // Deletes the entire 'mydb' database
  3. await conn.dropDatabase();

Connection.prototype.get()

Parameters
  • key «String»

Gets the value of the option key. Equivalent to conn.options[key]

Example:

  1. conn.get('test'); // returns the 'test' value

Connection.prototype.getClient()

Returns:
  • «MongoClient»

Returns the MongoDB driver MongoClient instance that this connection uses to talk to MongoDB.

Example:

  1. const conn = await mongoose.createConnection('mongodb://localhost:27017/test');
  2. conn.getClient(); // MongoClient { ... }

Type:
  • «property»

The host name portion of the URI. If multiple hosts, such as a replica set, this will contain the first host name in the URI

Example

  1. mongoose.createConnection('mongodb://localhost:27017/mydb').host; // "localhost"

Type:
  • «property»

A number identifier for this connection. Used for debugging when you have .

Example

  1. // The default connection has `id = 0`
  2. mongoose.connection.id; // 0
  3. // If you create a new connection, Mongoose increments id
  4. const conn = mongoose.createConnection();
  5. conn.id; // 1

Connection.prototype.model()

Parameters
  • name «String|Function» the model name or class extending Model

  • [schema] «Schema» a schema. necessary when defining a model

  • [collection] «String» name of mongodb collection (optional) if not given it will be induced from model name

  • [options] «Object»

  • [options.overwriteModels=false] «Boolean» If true, overwrite existing models with the same name to avoid OverwriteModelError

Returns:
  • «Model» The compiled model

Defines or retrieves a model.

When no collection argument is passed, Mongoose produces a collection name by passing the model name to the method. This method pluralizes the name. If you don’t like this behavior, either pass a collection name or set your schemas collection name option.

Example:

  1. const schema = new Schema({ name: String }, { collection: 'actor' });
  2. schema.set('collection', 'actor');
  3. // or
  4. const collectionName = 'actor'

Connection.prototype.modelNames()

Returns:
  • «Array»

Returns an array of model names created on this connection.


Type:
  • «property»

A containing a map from model names to models. Contains all models that have been added to this connection using Connection#model().

Example

  1. const conn = mongoose.createConnection();
  2. const Test = conn.model('Test', mongoose.Schema({ name: String }));
  3. Object.keys(conn.models).length; // 1
  4. conn.models.Test === Test; // true

Type:
  • «property»

The name of the database this connection points to.

Example

  1. mongoose.createConnection('mongodb://localhost:27017/mydb').name; // "mydb"

Parameters
  • uri «String» The URI to connect with.

  • [options] «Object» Passed on to

  • [options.bufferCommands=true] «Boolean» Mongoose specific option. Set to false to disable buffering on all models associated with this connection.

  • [options.bufferTimeoutMS=10000] «Number» Mongoose specific option. If bufferCommands is true, Mongoose will throw an error after bufferTimeoutMS if the operation is still buffered.

  • [options.dbName] «String» The name of the database we want to use. If not provided, use database name from connection string.

  • [options.user] «String» username for authentication, equivalent to options.auth.user. Maintained for backwards compatibility.

  • [options.pass] «String» password for authentication, equivalent to options.auth.password. Maintained for backwards compatibility.

  • [options.maxPoolSize=100] «Number» The maximum number of sockets the MongoDB driver will keep open for this connection. Keep in mind that MongoDB only allows one operation per socket at a time, so you may want to increase this if you find you have a few slow queries that are blocking faster queries from proceeding. See .

  • [options.minPoolSize=0] «Number» The minimum number of sockets the MongoDB driver will keep open for this connection. Keep in mind that MongoDB only allows one operation per socket at a time, so you may want to increase this if you find you have a few slow queries that are blocking faster queries from proceeding. See Slow Trains in MongoDB and Node.js.

  • [options.serverSelectionTimeoutMS] «Number» If useUnifiedTopology = true, the MongoDB driver will try to find a server to send any given operation to, and keep retrying for serverSelectionTimeoutMS milliseconds before erroring out. If not set, the MongoDB driver defaults to using 30000 (30 seconds).

  • [options.heartbeatFrequencyMS] «Number» If useUnifiedTopology = true, the MongoDB driver sends a heartbeat every heartbeatFrequencyMS to check on the status of the connection. A heartbeat is subject to serverSelectionTimeoutMS, so the MongoDB driver will retry failed heartbeats for up to 30 seconds by default. Mongoose only emits a 'disconnected' event after a heartbeat has failed, so you may want to decrease this setting to reduce the time between when your server goes down and when Mongoose emits 'disconnected'. We recommend you do not set this setting below 1000, too many heartbeats can lead to performance degradation.

  • [options.autoIndex=true] «Boolean» Mongoose-specific option. Set to false to disable automatic index creation for all models associated with this connection.

  • [options.promiseLibrary] «Class» Sets the .

  • [options.socketTimeoutMS=30000] «Number» How long the MongoDB driver will wait before killing a socket due to inactivity after initial connection. A socket may be inactive because of either no activity or a long-running operation. This is set to 30000 by default, you should set this to 2-3x your longest running operation if you expect some of your database operations to run longer than 20 seconds. This option is passed to Node.js socket#setTimeout() function after the MongoDB driver successfully completes.

  • [options.family=0] «Number» Passed transparently to function. May be either 0, 4, or 6. 4means use IPv4 only,6means use IPv6 only,0` means try both.

  • [options.autoCreate=false] «Boolean» Set to true to make Mongoose automatically call createCollection() on every model created on this connection.

  • [callback] «Function»

Opens the connection with a URI using MongoClient.connect().


Type:
  • «property»

The password specified in the URI

Example

  1. mongoose.createConnection('mongodb://val:psw@localhost:27017/mydb').pass; // "psw"

Parameters
  • fn «Function» plugin callback

  • [opts] «Object» optional options

Returns:
  • «Connection» this

Declares a plugin executed on all schemas you pass to conn.model()

Equivalent to calling .plugin(fn) on each schema you create.

Example:

  1. const db = mongoose.createConnection('mongodb://localhost:27017/mydb');
  2. db.plugin(() => console.log('Applied'));
  3. db.plugins.length; // 1
  4. db.model('Test', new Schema({})); // Prints "Applied"

Connection.prototype.plugins

Type:
  • «property»

The plugins that will be applied to all models created on this connection.

Example:

  1. const db = mongoose.createConnection('mongodb://localhost:27017/mydb');
  2. db.plugin(() => console.log('Applied'));
  3. db.plugins.length; // 1
  4. db.model('Test', new Schema({})); // Prints "Applied"

Connection.prototype.port

Type:
  • «property»

The port portion of the URI. If multiple hosts, such as a replica set, this will contain the port from the first host name in the URI.

Example


Connection.prototype.readyState

Type:
  • «property»

Connection ready state

  • 0 = disconnected
  • 1 = connected
  • 2 = connecting
  • 3 = disconnecting

Each state change emits its associated event name.

Example

  1. conn.on('connected', callback);
  2. conn.on('disconnected', callback);

Connection.prototype.set()

Parameters
  • key «String»
  • val «Any»

Sets the value of the option key. Equivalent to conn.options[key] = val

  • maxTimeMS: Set maxTimeMS for all queries on this connection.

Example:

  1. conn.set('test', 'foo');
  2. conn.get('test'); // 'foo'
  3. conn.options.test; // 'foo'

Returns:
  • «Connection» this

Set the instance that this connection uses to talk to MongoDB. This is useful if you already have a MongoClient instance, and want to reuse it.

Example:

  1. const client = await mongodb.MongoClient.connect('mongodb://localhost:27017/test');
  2. const conn = mongoose.createConnection().setClient(client);
  3. conn.getClient(); // MongoClient { ... }
  4. conn.readyState; // 1, means 'CONNECTED'

Connection.prototype.startSession()

Parameters
  • [options] «Object» see the mongodb driver options

  • [options.causalConsistency=true] «Boolean» set to false to disable causal consistency

  • [callback] «Function»

Returns:
  • «Promise<ClientSession>» promise that resolves to a MongoDB driver ClientSession

Requires MongoDB >= 3.6.0. Starts a MongoDB session for benefits like causal consistency, , and transactions.

Example:

  1. const session = await conn.startSession();
  2. let doc = await Person.findOne({ name: 'Ned Stark' }, null, { session });
  3. await doc.remove();
  4. // `doc` will always be null, even if reading from a replica set
  5. // secondary. Without causal consistency, it is possible to
  6. // get a doc back from the below query if the query reads from a
  7. // secondary that is experiencing replication lag.
  8. doc = await Person.findOne({ name: 'Ned Stark' }, null, { session, readPreference: 'secondary' });

Parameters
  • fn «Function» Function to execute in a transaction

  • [options] «mongodb.TransactionOptions» Optional settings for the transaction

Returns:
  • «Promise<Any>» promise that is fulfilled if Mongoose successfully committed the transaction, or rejects if the transaction was aborted or if Mongoose failed to commit the transaction. If fulfilled, the promise resolves to a MongoDB command result.

Requires MongoDB >= 3.6.0. Executes the wrapped async function in a transaction. Mongoose will commit the transaction if the async function executes successfully and attempt to retry if there was a retriable error.

Calls the MongoDB driver’s session.withTransaction(), but also handles resetting Mongoose document state as shown below.

Example:

  1. const doc = new Person({ name: 'Will Riker' });
  2. await db.transaction(async function setRank(session) {
  3. doc.rank = 'Captain';
  4. await doc.save({ session });
  5. doc.isNew; // false
  6. // Throw an error to abort the transaction
  7. throw new Error('Oops!');
  8. },{ readPreference: 'primary' }).catch(() => {});
  9. // true, `transaction()` reset the document's state because the
  10. // transaction was aborted.
  11. doc.isNew;

Parameters
  • name «String» The database name

  • [options] «Object»

  • [options.useCache=false] «Boolean» If true, cache results so calling useDb() multiple times with the same name only creates 1 connection object.

  • [options.noListener=false] «Boolean» If true, the connection object will not make the db listen to events on the original connection. See .

Returns:
  • «Connection» New Connection Object

Switches to a different database using the same connection pool.

Returns a new connection object, with the new db.


Connection.prototype.user

Type:
  • «property»

The username specified in the URI

Example

  1. mongoose.createConnection('mongodb://val:psw@localhost:27017/mydb').user; // "val"

Connection.prototype.watch()

Parameters
Returns:
  • «ChangeStream» mongoose-specific change stream wrapper, inherits from EventEmitter

Watches the entire underlying database for changes. Similar to Model.watch().

The ChangeStream object is an event emitter that emits the following events

  • ‘change’: A change occurred, see below example
  • ‘error’: An unrecoverable error occurred. In particular, change streams currently error out if they lose connection to the replica set primary. Follow this GitHub issue for updates.
  • ‘end’: Emitted if the underlying stream is closed
  • ‘close’: Emitted if the underlying stream is closed

Example: