接続


Connection()

パラメータ
  • base «Mongoose» mongooseインスタンス

継承

Connectionコンストラクタ

実用上の理由から、ConnectionはDbと等価です。


Connection.prototype.asPromise()

戻り値
  • «Promise»

この接続がMongoDBに正常に接続されたときに解決されるPromise、または接続に失敗したときに拒否されるPromiseを返します。

const conn = await mongoose.createConnection('mongodb://127.0.0.1:27017/test').
  asPromise();
conn.readyState; // 1, means Mongoose is connected

Connection.prototype.client

タイプ
  • «property»

この接続がMongoDBとの通信に使用するMongoClientインスタンス。接続が開かれると、Mongooseはこのプロパティを自動的に設定します。


Connection.prototype.close()

パラメータ
  • [force] «Boolean» オプション

戻り値
  • «Promise»

接続を閉じます


Connection.prototype.collection()

パラメータ
  • name «String» コレクションの名前

  • [options] «Object» オプションのコレクションオプション

戻り値
  • «Collection» コレクションインスタンス

キャッシュされていない場合は作成し、生のコレクションインスタンスを取得します。このメソッドは、[MongoDB Node.jsドライバコレクション](MongoDB Node.jsドライバコレクション)の薄いラッパーを返します。Collectionを使用すると、Mongooseミドルウェア、検証、およびキャストをバイパスし、MongoDB Node.jsドライバの機能を直接使用できます。


Connection.prototype.collections

タイプ
  • «property»

この接続に関連付けられているコレクションのハッシュ


Connection.prototype.config

タイプ
  • «property»

この接続に関連付けられているグローバルオプションのハッシュ


Connection.prototype.createCollection()

パラメータ
戻り値
  • «Promise»

createCollection()のヘルパー。指定されたオプションで指定されたコレクションを明示的に作成します。Mongooseからキャッピングされたコレクションビューを作成するために使用されます。

オプションは、MongoDBドライバのcreateCollection()関数に変更を加えることなく渡されます。


Connection.prototype.createCollections()

パラメータ
  • continueOnError «Boolean» trueの場合、コレクションの作成を続行し、エラーが発生したコレクションの新しいエラースクラスを作成します。

モデルのcreateCollection()を順番に呼び出します。


Connection.prototype.db

タイプ
  • «property»

接続が開かれたときに設定されるmongodb.Dbインスタンス


Connection.prototype.deleteModel()

パラメータ
  • name «String|RegExp» 文字列の場合、削除するモデルの名前。正規式の場合、名前が正規式に一致するすべてのモデルを削除します。

戻り値
  • «Connection» this

nameという名前のモデルが存在する場合は、この接続から削除します。この関数を使用して、テストで作成したモデルをクリーンアップし、OverwriteModelErrorsを防ぐことができます。

conn.model('User', new Schema({ name: String }));
console.log(conn.model('User')); // Model object
conn.deleteModel('User');
console.log(conn.model('User')); // undefined

// Usually useful in a Mocha `afterEach()` hook
afterEach(function() {
  conn.deleteModel(/.+/); // Delete every model
});

Connection.prototype.destroy()

パラメータ
  • [force] «Boolean»

接続を破棄します。.closeに似ていますが、Mongooseの`connections`リストから接続も削除し、接続が再び開かれるのを防ぎます。


Connection.prototype.dropCollection()

パラメータ
  • collection «string» 削除するコレクション

戻り値
  • «Promise»

dropCollection()のヘルパー。すべてのドキュメントとインデックスを含む、指定されたコレクションを削除します。


Connection.prototype.dropDatabase()

戻り値
  • «Promise»

dropDatabase()のヘルパー。すべてのコレクション、ドキュメント、およびインデックスを含む、指定されたデータベースを削除します。

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

Connection.prototype.get()

パラメータ
  • key «String»

オプションkeyの値を取得します。conn.options[key]と同等です

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

Connection.prototype.getClient()

戻り値
  • «MongoClient»

この接続がMongoDBとの通信に使用するMongoDBドライバMongoClientインスタンスを返します。

const conn = await mongoose.createConnection('mongodb://127.0.0.1:27017/test').
  asPromise();

conn.getClient(); // MongoClient { ... }

Connection.prototype.host

タイプ
  • «property»

URIのホスト名部分。レプリカセットなどの複数のホストがある場合、URIの最初のホスト名が含まれます

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

Connection.prototype.id

タイプ
  • «property»

この接続の番号識別子。複数の接続がある場合のデバッグに使用されます。

// The default connection has `id = 0`
mongoose.connection.id; // 0

// If you create a new connection, Mongoose increments id
const conn = mongoose.createConnection();
conn.id; // 1

Connection.prototype.listCollections()

戻り値
  • «Promise<Array[Collection]>»

MongoDBノードドライバの`listCollections()`のヘルパー。コレクションオブジェクトの配列を返します。


Connection.prototype.listDatabases()

戻り値
  • «Promise<[object Object]>»

MongoDBノードドライバの`listDatabases()`のヘルパー。データベースオブジェクトの配列を含む`databases`プロパティを持つオブジェクトを返します。

const { databases } = await mongoose.connection.listDatabases();
databases; // [{ name: 'mongoose_test', sizeOnDisk: 0, empty: false }]

Connection.prototype.model()

パラメータ
  • name «String|Function» モデル名またはModelを拡張するクラス

  • [schema] «Schema» スキーマ。モデルを定義する際に必要です

  • [collection] «String» mongodbコレクションの名前(オプション)。指定しない場合は、モデル名から推測されます

  • [options] «Object»
    • [options.overwriteModels=false] «Boolean» trueの場合、同じ名前の既存のモデルを上書きして、`OverwriteModelError`を回避します

戻り値
  • «Model» コンパイルされたモデル
参照

モデルを定義または取得します。

const mongoose = require('mongoose');
const db = mongoose.createConnection(..);
db.model('Venue', new Schema(..));
const Ticket = db.model('Ticket', new Schema(..));
const Venue = db.model('Venue');

collection引数が渡されない場合、Mongooseはモデル`name`を`utils.toCollectionName`メソッドに渡すことによってコレクション名を生成します。このメソッドは名前を複数形にします。この動作が気に入らない場合は、コレクション名を渡すか、スキーマのコレクション名オプションを設定してください。

const schema = new Schema({ name: String }, { collection: 'actor' });

// or

schema.set('collection', 'actor');

// or

const collectionName = 'actor'
const M = conn.model('Actor', schema, collectionName)

Connection.prototype.modelNames()

戻り値
  • «Array[String]»

この接続で作成されたモデル名の配列を返します。


Connection.prototype.models

タイプ
  • «property»

モデル名からモデルへのマップを含むPOJOConnection#model()を使用してこの接続に追加されたすべてのモデルが含まれています。

const conn = mongoose.createConnection();
const Test = conn.model('Test', mongoose.Schema({ name: String }));

Object.keys(conn.models).length; // 1
conn.models.Test === Test; // true

Connection.prototype.name

タイプ
  • «property»

この接続が指しているデータベースの名前。

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

Connection.prototype.openUri()

パラメータ
  • uri «String» 接続に使用するURI。

  • [options] «Object» MongoClient.connectに渡されます

    • [options.bufferCommands=true] «Boolean» Mongoose固有のオプション。falseに設定すると、この接続に関連付けられているすべてのモデルのバッファリングが無効になります (バッファリングを無効にする)。

    • [options.bufferTimeoutMS=10000] «Number» Mongoose固有のオプション。`bufferCommands`がtrueの場合、操作がまだバッファされている場合、Mongooseは`bufferTimeoutMS`後にエラーをスローします。

    • [options.dbName] «String» 使用するデータベースの名前。指定しない場合は、接続文字列からデータベース名を使用します。

    • [options.user] «String» 認証のユーザー名。`options.auth.user`と同等です。下位互換性のために維持されています。

    • [options.pass] «String» 認証のパスワード。`options.auth.password`と同等です。下位互換性のために維持されています。

    • [options.maxPoolSize=100] «Number» MongoDBドライバがこの接続のために開いたままにするソケットの最大数。MongoDBは一度に1つのソケットにつき1つの操作しか許可しないため、高速なクエリが遅いクエリによってブロックされていることがわかった場合は、これを増やす必要があるかもしれません。MongoDBとNode.jsの遅い列車を参照してください。

    • [options.minPoolSize=0] «Number» MongoDBドライバがこの接続のために開いたままにするソケットの最小数。MongoDBは一度に1つのソケットにつき1つの操作しか許可しないため、高速なクエリが遅いクエリによってブロックされていることがわかった場合は、これを増やす必要があるかもしれません。MongoDBとNode.jsの遅い列車を参照してください。

    • [options.serverSelectionTimeoutMS] «Number» `useUnifiedTopology = true`の場合、MongoDBドライバは任意の操作を送信するサーバーを見つけようとします。`serverSelectionTimeoutMS`ミリ秒間再試行し続け、エラーが発生します。設定されていない場合、MongoDBドライバはデフォルトで`30000`(30秒)を使用します。

    • [options.heartbeatFrequencyMS] «Number» `useUnifiedTopology = true`の場合、MongoDBドライバは`heartbeatFrequencyMS`ごとにハートビートを送信して、接続の状態を確認します。ハートビートは`serverSelectionTimeoutMS`の対象となるため、MongoDBドライバはデフォルトで最大30秒間、失敗したハートビートを再試行します。Mongooseは、ハートビートが失敗した後にのみ「disconnected」イベントを発行するため、サーバーがダウンしてからMongooseが「disconnected」を発行するまでの時間を短縮するために、この設定を小さくすることをお勧めします。この設定を1000未満に設定しないことをお勧めします。ハートビートが多すぎると、パフォーマンスが低下する可能性があります。

    • [options.autoIndex=true] «Boolean» Mongoose固有のオプション。falseに設定すると、この接続に関連付けられているすべてのモデルの自動インデックス作成が無効になります。

    • [options.socketTimeoutMS=0] «Number» 初期接続後、MongoDBドライバが非アクティブが原因でソケットを強制終了するまで待機する時間。ソケットが非アクティブになるのは、アクティビティがないか、長時間実行されている操作が原因である可能性があります。`socketTimeoutMS`のデフォルトは0で、これはNode.jsが非アクティブが原因でソケットをタイムアウトしないことを意味します。このオプションは、MongoDBドライバが正常に完了した後、Node.js `socket#setTimeout()`関数に渡されます。

    • [options.family=0] «Number» Node.jsの`dns.lookup()`関数に透過的に渡されます。`0`、`4`、または`6`のいずれかになります。`4`はIPv4のみを使用することを意味し、`6`はIPv6のみを使用することを意味し、`0`は両方試すことを意味します。

    • [options.autoCreate=false] «Boolean» `true`に設定すると、この接続で作成されたすべてのモデルでMongooseが自動的に`createCollection()`を呼び出します。

MongoClient.connect()を使用して、URIで接続を開きます。


Connection.prototype.pass

タイプ
  • «property»

URIで指定されたパスワード

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

Connection.prototype.plugin()

パラメータ
  • fn «Function» プラグインコールバック

  • [opts] «Object» オプションのオプション

戻り値
  • «Connection» this
参照

conn.model()に渡すすべてのスキーマで実行されるプラグインを宣言します

作成する各スキーマで.plugin(fn)を呼び出すことと同等です。

const db = mongoose.createConnection('mongodb://127.0.0.1:27017/mydb');
db.plugin(() => console.log('Applied'));
db.plugins.length; // 1

db.model('Test', new Schema({})); // Prints "Applied"

Connection.prototype.plugins

タイプ
  • «property»

この接続で作成されるすべてのモデルに適用されるプラグイン。

const db = mongoose.createConnection('mongodb://127.0.0.1:27017/mydb');
db.plugin(() => console.log('Applied'));
db.plugins.length; // 1

db.model('Test', new Schema({})); // Prints "Applied"

Connection.prototype.port

タイプ
  • «property»

URI のポート部分。レプリカセットなどの複数のホストがある場合、URI の最初のホスト名からのポートが含まれます。

mongoose.createConnection('mongodb://127.0.0.1:27017/mydb').port; // 27017

Connection.prototype.readyState

タイプ
  • «property»

接続準備状態

  • 0 = 切断
  • 1 = 接続済み
  • 2 = 接続中
  • 3 = 切断中

各状態変更は、関連付けられたイベント名を発します。

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

Connection.prototype.removeDb()

パラメータ
  • name «String» データベース名

戻り値
  • «Connection» this

useDb() で作成された、指定された名前のデータベース接続を削除します。

データベース接続が見つからない場合は、エラーをスローします。

// Connect to `initialdb` first
const conn = await mongoose.createConnection('mongodb://127.0.0.1:27017/initialdb').asPromise();

// Creates an un-cached connection to `mydb`
const db = conn.useDb('mydb');

// Closes `db`, and removes `db` from `conn.relatedDbs` and `conn.otherDbs`
await conn.removeDb('mydb');

Connection.prototype.set()

パラメータ
  • key «String»
  • val «Any»

オプション key の値を設定します。 conn.options[key] = val と同等です。

サポートされているオプションは次のとおりです。

  • maxTimeMS: この接続上のすべてのクエリに対して maxTimeMS を設定します。
  • `debug`: `true` の場合、mongoose が MongoDB に送信する操作をコンソールに出力します。書き込み可能なストリームが渡された場合、色付けなしでそのストリームにログを記録します。 コールバック関数が渡された場合、コレクション名、メソッド名、メソッドに渡されたすべての引数を受け取ります。 たとえば、デフォルトのログを複製する場合、コールバック `Mongoose: ${collectionName}.${methodName}(${methodArgs.join(', ')})` から出力できます。

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

Connection.prototype.setClient()

パラメータ
  • client «MongClient» 使用するクライアントを設定します。

戻り値
  • «Connection» this

この接続が MongoDB と通信するために使用する MongoDB ドライバー MongoClient インスタンスを設定します。 既に MongoClient インスタンスがあり、それを再利用したい場合に便利です。

const client = await mongodb.MongoClient.connect('mongodb://127.0.0.1:27017/test');

const conn = mongoose.createConnection().setClient(client);

conn.getClient(); // MongoClient { ... }
conn.readyState; // 1, means 'CONNECTED'

Connection.prototype.startSession()

パラメータ
戻り値
  • «Promise<ClientSession>» MongoDB ドライバーの ClientSession に解決される Promise

MongoDB >= 3.6.0 が必要です。 因果整合性、再試行可能な書き込みトランザクション などのメリットを得るために、MongoDB セッション を開始します。

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

Connection.prototype.syncIndexes()

パラメータ
  • [options] «Object»
    • [options.continueOnError] «Boolean» デフォルトは false です。 true に設定すると、1 つのモデルの同期が失敗した場合でも mongoose はエラーをスローせず、キーがモデルの名前、値が各モデルの結果/エラーであるオブジェクトを返します。

戻り値
  • «Promise<Object>» Promise を返します。Promise が解決されると、値は削除されたインデックスのリストになります。

この接続に登録されているすべてのモデルのインデックスを同期します。


Connection.prototype.transaction()

パラメータ
  • fn «Function» トランザクション内で実行する関数

  • [options] «[object Object]» トランザクションのオプション設定

戻り値
  • «Promise<Any>» Mongoose がトランザクションを正常にコミットした場合は履行され、トランザクションが中止された場合、または Mongoose がトランザクションのコミットに失敗した場合は拒否される promise です。履行された場合、promise は MongoDB コマンドの結果に解決されます。

MongoDB >= 3.6.0 が必要です。ラップされた非同期関数をトランザクション内で実行します。 Mongoose は、非同期関数が正常に実行された場合にトランザクションをコミットし、再試行可能なエラーが発生した場合は再試行を試みます。

MongoDB ドライバーの session.withTransaction() を呼び出しますが、以下に示すように Mongoose ドキュメントの状態のリセットも処理します。

const doc = new Person({ name: 'Will Riker' });
await db.transaction(async function setRank(session) {
  doc.rank = 'Captain';
  await doc.save({ session });
  doc.isNew; // false

  // Throw an error to abort the transaction
  throw new Error('Oops!');
},{ readPreference: 'primary' }).catch(() => {});

// true, `transaction()` reset the document's state because the
// transaction was aborted.
doc.isNew;

Connection.prototype.useDb()

パラメータ
  • name «String» データベース名

  • [options] «Object»
    • [options.useCache=false] «Boolean» true の場合、結果をキャッシュするため、同じ名前で useDb() を複数回呼び出しても、接続オブジェクトは 1 つだけ作成されます。

    • [options.noListener=false] «Boolean» true の場合、接続オブジェクトは db が元の接続のイベントを listen しません。 issue #9961 を参照してください。

戻り値
  • «Connection» 新しい接続オブジェクト

同じ 接続プール を使用して、別のデータベースに切り替えます。

新しい db を使用した、新しい接続オブジェクトを返します。

// Connect to `initialdb` first
const conn = await mongoose.createConnection('mongodb://127.0.0.1:27017/initialdb').asPromise();

// Creates an un-cached connection to `mydb`
const db = conn.useDb('mydb');
// Creates a cached connection to `mydb2`. All calls to `conn.useDb('mydb2', { useCache: true })` will return the same
// connection instance as opposed to creating a new connection instance
const db2 = conn.useDb('mydb2', { useCache: true });

Connection.prototype.user

タイプ
  • «property»

URI で指定されたユーザー名

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

Connection.prototype.watch()

パラメータ
戻り値
  • «ChangeStream» mongoose 固有の変更ストリームラッパー。EventEmitter を継承します

基になるデータベース全体の変更を監視します。 Model.watch() に似ています。

この関数はミドルウェアをトリガー**しません**。特に、集約ミドルウェアをトリガー**しません**。

ChangeStream オブジェクトは、次のイベントを発するイベントエミッターです

  • 'change': 変更が発生しました。以下の例を参照してください
  • 'error': 回復不可能なエラーが発生しました。特に、変更ストリームは現在、レプリカセットプライマリへの接続が失われた場合にエラーが発生します。 更新については、この GitHub issue を参照してください。
  • 'end': 基になるストリームが閉じられた場合に発行されます
  • 'close': 基になるストリームが閉じられた場合に発行されます

const User = conn.model('User', new Schema({ name: String }));

const changeStream = conn.watch().on('change', data => console.log(data));

// Triggers a 'change' event on the change stream.
await User.create({ name: 'test' });

Connection.prototype.withSession()

パラメータ
  • executor «Function» 1 つの引数(ClientSession インスタンス)で呼び出されます

戻り値
  • «Promise» executor 関数の戻り値に解決されます

connection.client.withSession() の便利なラッパーです。

await conn.withSession(async session => {
  const doc = await TestModel.findOne().session(session);
});