新機能
項目一覧
- 6.9の新機能
- 6.8の新機能
- 6.7の新機能
- 6.6の新機能
- 6.5の新機能
- 6.4の新機能
- 6.3 で追加される機能
- 6.2 の新機能
- 6.1 で追加された機能
- 6.0 で追加される機能
- 5.9 の新機能
- 5.8 の新機能
- 5.7 の新機能
- 5.6 の新機能
- 5.5 の新機能
- 5.4 の新機能
- 5.3 の新機能
- 5.2 の新機能
- 5.1 の新機能
- 5.0 の新機能
- 4.17 の新機能
- 4.16 の新機能
- 4.15 の新機能
- 4.14 の新機能
- 4.13 の新機能
- 4.12 の新機能
- 4.11 の新機能
- 4.10 の新機能
- 4.9 の新機能
- 4.8 の新機能
- 4.7 の新機能
- 4.6 の新機能
- 4.5 で追加された機能
- 4.4 の新機能
- 4.3 の新機能
- 4.2 の新機能
- 4.1 の新機能
- 4.0 の新機能
- 3.7 の新機能
- 3.6 の新機能
次の新機能をご覧ください。
6.9の新機能
MongoDB Server 3.6のサポートは非推奨であり、今後のドライバー リリースで削除される予定です。
ドライバーは、カーソルと
MongoClient
、ClientSession
、およびChangeStream
オブジェクトの明示的なリソース管理をネイティブでサポートしています。 互換性のある Node.js バージョンを使用する場合、cursor.stream()
メソッドとGridFSDownloadStream
クラスを使用して明示的なリソース管理を実装できます。明示的なリソース管理を使用する方法については、 v6.9.0 リリースノート を参照してくださいGithub .明示的なリソース管理について詳しくは、 ECMAScript 明示的なリソース管理の提案 Githubを参照してください。 .
Node.js18.13
autoSelectFamily
以降を使用している場合は、autoSelectFamilyTimeout
オプションと オプションをMongoClient
コンストラクターに渡すことができます。autoSelectFamily
オプションがtrue
の場合、ドライバーは IPv 4または IPv 6接続のいずれかを自動的に選択します。autoSelectFamilyTimeout
オプションは、ドライバーが接続ファミリーを選択するためのタイムアウトをミリ秒単位で指定します。次のコード例は、これらのオプションの使用方法を示しています。
const client = new MongoClient(uri, { autoSelectFamily: true, autoSelectFamilyTimeout: 100 }); MongoClient
コンストラクターはallowPartialTrustChain
オプションを受け入れます。 このオプションはX509_V_FLAG_PARTIAL_CHAIN
OpenSSL フラグを制御します。ConnectionCheckedOutEvent
とConnectionCheckFailedEvent
にdurationMS
プロパティが含まれるようになりました。 このプロパティは、接続チェックアウト操作の開始と終了までの経過時間を示します。Node.js 18以降を使用している場合、ドライバーは
cryptoCallbacks
オプションを無視し、代わりに C++ で定義されたコールバックを使用するため、暗号化のパフォーマンスが大幅に向上します。 この変更は v 6.1.0で利用可能です。mongodb-client-encryption
パッケージのバージョンセキュリティを強化するには、
mongocryptd
のスピニング パスと引数を指定するオプションは、autoEncryption.extraOptions
の所有者である必要があります。 この変更により、これらのオプションに関連するグローバルなプロトタイプ環境のバグを防ぐことができます。 独自のプロパティの詳細については、 Object.hasOwn() を参照してください MDN 上の。Queryable Encryption(QE)範囲クエリの公式サポートを追加します。 この機能を使用するには、アプリで
mongodb-client-encryption
v 6.1.0以降を使用し、MongoDB Server 8.0以降に接続する必要があります。 QEQueryable Encryption 範囲クエリの詳細については、MongoDB Server マニュアルの「 」を参照してください。insertMany()
メソッドとbulkWrite()
メソッドはReadonlyArray
入力を受け入れます。ドライバーは、
error.result.writeConcernError.code
にあるネストされたコードではなく、error.code
にある最上位コードに基づいて書き込みを再試行します。 これにより、 4.4より前のバージョンの MongoDB Server を実行しているシャーディングされたクラスターの問題が修正されます。LocalKMSProviderConfiguration.key
プロパティは、BSON
Binary
のAutoEncryptionOptions
インスタンスを受け入れます。Typescriptでは、
BulkOperationBase
クラスがlength
getter プロパティを報告します。MongoWriteConcernError
型はMongoWriteConcernError.code
に元の最上位コードを保持するようになりました。cursor.toArray()
メソッドは、非同期イテレータを再度呼び出す前に、現在のドキュメントのバッチを 配列に空にします。 この変更により、async
/await
の実行に関連する遅延が回避され、パフォーマンスが最大5 % 向上します。 この最適化は、toArray()
メソッドを呼び出す前にcursor.map()
メソッドへの変換を指定した場合は適用されません。cursor.next()
メソッドとfor await
構文の混合使用を修正しました。Node.js ドライバー v 6.8で不注意で削除された BSON の逆直列化時に
enableUtf8Validation
オプションを追加します。durationMS
プロパティをConnectionReadyEvent
クラスに追加します。 このプロパティは、接続作成イベントからConnectionReadyEvent
が起動するまでの時間を表します。
このリリースの詳細については、 v6.9.0 リリースノート を参照してくださいGithub .
6.8の新機能
Node.js ドライバー v 6.8リリースには、次の機能が含まれています。
ローカルKMSプロバイダーは実行時に
BSON Binary
インスタンスを受け入れましたが、 TypescriptコンパイラーはBuffer
とstring
のタイプの値のみを許可するバグを修正しました。ReadConcernMajorityNotAvailableYet
エラーは再試行可能な読み取りエラーになりました。KMS プロバイダーに名前を関連付け、複数のキーを提供できるようになりました。 この機能には
mongodb-client-encryption
v 6.0.1以降が必要です。 アプリケーションが KMS プロバイダーの自動更新機能を使用している場合、名前付き KMS プロバイダーは使用できません。次のコード例は、複数のAmazon Web Servicesキーを使用して
ClientEncryption
オブジェクトを構成する方法を示しています。const clientEncryption = new ClientEncryption(keyVaultClient, { 'aws:key1': { accessKeyId: ..., secretAccessKey: ... }, 'aws:key2': { accessKeyId: ..., secretAccessKey: ... }, clientEncryption.createDataKey('aws:key-1', { ... }); KMIP データキーを作成する際に、
delegated
オプションを指定できるようになりました。 このオプションをtrue
に設定すると、KMIP プロバイダーはデータキーの暗号化と復号化をローカルで実行し、暗号化のキーが KMIP サーバーから離れることはありません。 この機能にはmongodb-client-encryption
v 6.0.1以降が必要です。次のコード例は、このオプションを指定する方法を示しています。
clientEncryption.createDataKey('kmip', { masterKey: { delegated: true } } ); ドライバーは、受信時に BSON 応答全体をデコードするのではなく、カーソルが BSON 応答を反復処理するときに BSON 応答をデコードするようになりました。
mongodb
パッケージのGithubリリースには、 npmパッケージの分離された署名ファイルmongodb-X.Y.Z.tgz.sig
が含まれるようになりました。 この変更は、ドライバーのバージョン5 .x および6 .x のすべてのメジャーおよびパッチ リリースに適用されます。 パッケージの署名を検証するには、 README.md の リリースの整合性Github セクションの指示に従います。 ドライバーの リポジトリにあるファイル。
このリリースの詳細については、 v6.8.0 リリースノート を参照してくださいGithub .
6.7の新機能
Node.js ドライバー v 6.7リリースには、次の機能が含まれています。
MongoDB Server v 7.0以降に接続する際に
MONGODB-OIDC
認証メカニズムのサポートを追加します。 このドライバーは、Azure マシン認証、GCP マシン認証、コールバック認証、人間によるコールバック認証ファセットによる認証をサポートしています。useBigInt64
フラグをtrue
に設定すると内部compareTopologyVersion
関数がエラーを生成する問題を修正します。
このリリースの詳細については、 v6.7.0 リリースノート を参照してくださいGithub .
6.6の新機能
Node.js ドライバー v 6.6リリースには、次の機能が含まれています。
BSON 6.7.0を使用するようにアップグレードします。 BSON の新機能の詳細については、 BSON6.5.0 のリリースノートを参照してください。 、BSON6 。6 。0 、BSON6 70と 。 。
フロー集計 API に
addStage()
メソッドを追加します。 このメソッドを使用して、次の例に示すように、集計パイプライン ステージを個別に追加できます。const documents = await users.aggregate().addStage({ $project: { name: true } }).toArray(); cause
フィールドとdependencyName
フィールドをMongoMissingDependencyError
クラスに追加します。 これらのフィールドを使用して、パッケージが欠落しているかどうか、またはパッケージがロードされなかった理由をプログラム的に判断できます。minRoundTripTime
プロパティをServerDescription
クラスに追加します。 このプロパティには、最後の10ハートビートの最小ラウンドトリップ時間が含まれます。toJSON()
メソッドをTopologyDescription
クラスに追加します。 このメソッドを使用してTopologyDescription
オブジェクトを JSON に文字列化できますが、代わりに Node のutil.inspect()
メソッドを使用することをお勧めします。これは、JavaScript とドライバーで使用されるすべての型を適切に処理するためです。Typescript の
Collection.indexExists()
、Collection.indexes()
、Collection.indexInformation()
メソッドのカーソル オプション サポートを追加します。Collection.listSearchIndexes()
メソッドからreadConcern
とwriteConcern
オプションのサポートを削除します。listSearchIndexes()
はAtlas固有のメソッドであり、 Atlas Searchインデックスはこれらのオプションをサポートしていません。ServerDescription.roundTripTime
プロパティを移動平均として再定義します。 以前は、直近で確認されたハートビートの期間とその前の期間の重みによる平均でした。次の例に示すように、インデックスを作成する際に検索インデックスのタイプを指定できます。
const indexName = await collection.createSearchIndex({ name: 'my-vector-search-index', type: 'vectorSearch', definition: { mappings: { dynamic: false } } }); UpdateFilter.$currentDate
プロパティは、スキーマが制限されたコレクションでfindOneAndUpdate()
などの複合メソッドに渡しても、エラーをスローしなくなりました。ドライバーは、
primary
以外のReadPreferenceMode
を指定し、読み取り操作を含むコマンドを実行しようとした場合にのみMongoTransactionError
をスローします。TopologyDescription.error
プロパティのデータ型はMongoError
です。Collection.indexExists()
メソッドはfull
オプションをサポートしなくなりました。Collection.indexInformation()
、Collection.indexes()
、Db.indexInformation()
メソッドの戻り値の型はIndexDescriptionCompact | IndexDescriptionInfo[]
です( Typescript )。Amazon Web Services KMS (Key Management System)認証情報を検索するときに、ドライバーは有効期限タイムスタンプを含むアクセス キーを受信してもエラーをスローしなくなりました。
ClusterTime
インターフェースは、 Typescriptで必要とされるsignature
フィールドの定義を終了しました。
このリリースの詳細については、 v6.6.0 リリースのハイライト Githubを参照してください。 .
6.5の新機能
Node.js ドライバー v 6.5リリースには、次の機能が含まれています。
ドキュメント ID 生成に
pkFactory
クラスを使用するように一括書き込み操作を更新します。
警告
一括書き込みを処理するためにpkFactory
のインスタンスを指定したことがある場合、一括書き込みを使用して挿入されたドキュメントの_id
フィールドは、このバージョンの動作と一致しない可能性があります。
ドライバーがレプリカセット内のセカンダリ ノードに接続されている場合に読み取り操作で送信される読み込み設定を
primaryPreferred
に修正します。ソケット操作の Promise 作成におけるメモリ リークを修正します。
DNS シードリストに接続するときに、
SRV
TXT
レコードと レコードを並行してクエリすることで、初回接続レイテンシを軽減します。Kubernetes のクライアントまたは ハンドシェイク ドキュメントの
client.env.container
フィールドでコンテナ環境を実行する際に、コンテナ メタデータに追跡を追加します。サーバーによって返された元のエラードキュメントを
MongoServerError
ドキュメントのerrorResponse
フィールドに追加します。ドライバーでは使用されていない
CloseOptions
インターフェースを廃止します。
このリリースの詳細については、 v6.5.0 リリースのハイライト Githubを参照してください。 .
6.4の新機能
Node.js ドライバー v 6.4リリースには、次の機能が含まれています。
複数の
mongos
インスタンスが利用可能な場合、読み取りと書込みの再試行で異なるサーバーが使用されます。認証ごとではなく、クライアントレベルでAmazon Web Servicesの認証情報をキャッシュします。
BSON 6.4.0を使用するようにアップグレードします。 BSON の新機能の詳細については、 BSON6.3.0 のリリースノートを参照してください。 BSON6 と4 。0 。
ExceededTimeLimit
エラーが発生した読み取り操作は再試行されます。mongosh 認証を可能にするために
saslContinue
コマンドの基本64パディングを修正します。ではなく
countDocuments
を使用して を入力するため、オートコンプリートが可能になり、下流の入力の問題を防ぐことができます。Filter<Schema>
Document
bulkWrite
コマンドの$addToSet
オプションの型エラーを修正します。 ドライバーは、Document
またはany
から型を拡張したり、任意の型のプロパティを使用したりする場合に、$addToSet
検証をスキップします。ソケットを作成する時間が含まれないように、
ServerHeartbeatSucceeded
とServerHeartbeatFailed
イベントのハートビート期間を修正します。カーソル変換ストリームからのエラーを受信するのではなく、適切にエラーを出力します。
ユーザー名とパスワードが提供されている場合にAmazon Web Servicesセッション トークンを任意にし、 Amazon Web Services SDK が認証リクエストを処理できるようにします。
このリリースの詳細については、 v6.4.0 リリースのハイライト Githubを参照してください。 .
6.3 で追加される機能
Node.js ドライバー v6.3 リリースには、次の機能が含まれています。
トポロジー内のノード間のモニタリング接続の動作を制御するために
serverMonitoringMode
クライアント オプションを追加します。 このオプションには、auto
(デフォルト)、poll
、またはstream
の値が指定されます。 詳細については、接続オプションガイドのこのオプションに関するエントリを参照してください。serverMonitoringMode
オプションは、MongoClientOptions
インスタンス内で、または接続stringオプションとして設定できます。 次の例は、 オプションをstream
に設定してクライアントを作成する方法を示しています。new MongoClient('<connection string>', { serverMonitoringMode: 'stream' }); serverApi
クライアント オプションが設定されている場合の接続リークを修正します。contentType
とaliases
GridFS オプションを廃止します。contentType
aliases
ファイルのコンテンツタイプとエイリアスを保存するには、metadata
ドキュメントに フィールドと フィールドを追加します。
このリリースの詳細については、 v6.3.0 リリースのハイライトを参照してください。
6.2 の新機能
Node.js ドライバー v6.2 リリースには、次の機能が含まれています。
次の画像に示すように、タイプの色可視化を含めるために、
bson
パッケージ バージョンを 6.2.0 にアップデートします。詳細については、「BSON v6.2.0 リリースノート 」を参照してください。
一括書き込みエラータイプの
result.insertedIds
プロパティに、正常に挿入されたドキュメントの_id
値が含まれていることを確認します。 以前のバージョンでは、一括書き込み操作が挿入操作を拒否する場合、result.insertedIds
プロパティには試行されたすべての挿入の_id
値が含まれていました。時系列コレクションで
findOne()
メソッドを実行中に作成された暗黙的なセッションは、操作の結果に関係なく閉じます。.
文字で始まる名前または末尾のコレクションを作成できるようにします。 この変更により、ドライバーのデータベースとコレクションの名前をチェックする動作がサーバーの と一致します。
このリリースの詳細については、 v6.2.0 リリースのハイライトを参照してください。
6.1 で追加された機能
Node.js ドライバー v6.1 リリースには、次の機能が含まれています。
bson
パッケージ バージョンを6.1.0に更新して、Decimal128.fromStringWithRounding()
メソッドを公開します。 詳細については、 v6.1 .0BSON リリースノート を参照してください。MONGODB-AWS
認証メカニズムを使用して認証するときに、リージョン設定の環境変数を検出します。 リージョン オプションを使用するようにドライバーに指示するには、次の環境変数の両方を設定する必要があります。AWS_STS_REGIONAL_ENDPOINTS
AWS_REGION
ChangeStream
型のnext()
メソッドへの再帰呼び出しによって発生するメモリ リークの問題を修正します。
このリリースの詳細については、 v6.1.0 リリースのハイライトを参照してください。
6.0 で追加される機能
警告
v6.0 での重大な変更
このドライバー バージョンでは、重大な変更が導入されています。 これらの変更のリストについては、アップグレード ガイドの「バージョン6.0重大な変更 」セクションを参照してください。
Node.js ドライバー v6.0 リリースには、次の機能が含まれています。
重要
非推奨に関する通知
MongoClientOptions
タイプのssl
プレフィックス付きオプションはすべて非推奨です。 また、 tlsCertificateFile
オプションは非推奨です。
代わりに、証明書をSecureContext
オブジェクトに保存するか、 MongoClientOptions
インスタンスでtls
プレフィックス付きオプションを設定する必要があります。 詳細については、 「 接続で TLS を有効にする 」を参照してください。
addUser()
ヘルパー コマンドのサポートを廃止します。 代わりにcreateUser MongoDB Shell コマンドを使用してください。collStats
操作のサポートを廃止します。 代わりに、 $collStats集計演算子を使用してください。ConnectionPoolCreatedEvent
型のoptions
フィールドには、デフォルト以外のプール オプションである次のフィールドのみが含まれます。maxConnecting
maxPoolSize
minPoolSize
maxIdleTimeMS
waitQueueTimeoutMS
ドライバーは、 インスタンスを作成したときではなく、 メソッドを呼び出したときに、
tlsCAFile
tlsCertificateKeyFile
接続オプションとMongoClient.connect()
MongoClient
接続オプションで設定されているファイルを非同期に読み取ります。keepAlive
とkeepAliveInitialDelay
接続オプションを削除します。keepAlive
の値は永続的にtrue
に設定され、keepAliveInitialDelay
の値は 300000 ミリ秒(300 秒)に設定されます。システム レベルでキープアライブ設定を設定する方法については、 「 TCP キープアライブ時間が MongoDB デプロイに及ぼす影響 」を参照してください。 サーバー マニュアルの FAQ エントリ。
Db.command()
メソッドの次のオプションを削除します。willRetryWrite
omitReadPreference
writeConcern
explain
readConcern
collation
maxTimeMS
comment
retryWrites
dbName
authdb
noResponse
これらのオプションを
Db.command()
メソッドに渡すことはできませんが、コマンド ドキュメントで設定できます。 詳細については、「 コマンドの実行 」ガイドの「コマンド オプション 」セクションを参照してください。
このリリースの詳細については、 v6.0.0 リリースのハイライトを参照してください。
5.9 の新機能
重要
v5.8 から v5.9 にアップグレード
このバージョンには、v5.7 で導入されたメモリ リークに対する修正が含まれています。 v5.9 にアップグレードすることをお勧めします。
Node.js ドライバー v5.9 リリースには、次の機能が含まれています。
v5.7 で導入されたメモリ リークを修正しました。
Decimal128
コンストラクターとfromString()
メソッドは、 34桁を超える精度の損失を検出した場合に例外をスローするようになりました。Decimal128
クラスは、ドライバーの以前のバージョンの丸め動作を使用する新しいfromStringWithRounding()
静的メソッドを公開します。 詳細について は、 js-bson パッケージの v のリリースノートを5.5 参照してくださいGithub .Amazon Web Services SDK で
fromNodeProviderChain()
メソッドを呼び出すときに、AWS_STS_REGIONAL_ENDPOINTS
とAWS_REGION
環境変数を検出し、適切なオプションを設定するためのサポートを追加しました。
このリリースの詳細については、 v5.9.0 リリースのハイライトを参照してください。
5.8 の新機能
重要
v5.8 から v5.9 にアップグレード
このバージョンには、v5.7 で導入されたメモリ リークに対する修正が含まれています。 v5.9 にアップグレードすることをお勧めします。
Node.js ドライバー v5.8 リリースには、次の機能が含まれています。
重要
非推奨に関する通知
AutoEncrypter
インターフェースは非推奨です。
Kerberos バージョン 1.x および 2.x のサポート。
tlsCertificateKeyFile
プロパティを設定すると、tlsCertificateFile
プロパティでは非推奨エラーは表示されません。ConnectionPoolCreatedEvent
タイプの認証情報の可用性を削除します。MongoOptions
インスタンスのcredentials
プロパティから認証情報にアクセスするには、引き続き認証情報にアクセスできます。@aws-sdk/credential-providers
のバージョンを 3.188.0 に下げます およびzstd
を ^1.0.0 に設定します。
このリリースの詳細については、 v5.8.0 リリースのハイライトを参照してください。
5.7 の新機能
Node.js ドライバー v5.7 リリースには、次の機能が含まれています。
重要
非推奨に関する通知
次の書込み保証 (write concern) オプションは非推奨です。
wtimeout
j
fsync
書込み保証(write concern)の動作を指定するには、代わりに
wtimeoutMS
とjournal
オプションを使用します。 これらのオプションの詳細については、「接続オプション 」ページを参照してください。SSL オプションおよびその他のトランスポート暗号化オプションは非推奨です。 非推奨のオプションと代わりに使用するオプションの詳細については、このセクションの最後にリンクしている v5.7.0 リリースのハイライト の「 レガシー SSL オプションの非推奨 」セクションを参照してください。
複合操作メソッドの新しいオプション。
includeResultMetaData
オプションを使用すると、操作結果に関する情報を含めるかどうかを指定できます。 詳細については、 複合操作 ガイドの「組み込みメソッド」セクションを参照してください。変更ストリーム分裂 イベントのサポートにより、16 MB の最大 BSON サイズ制限を超える変更ストリーム ドキュメントの処理が可能になります。
アプリケーション内から検索インデックスを管理するための API。 詳しくは、「検索インデックス 」を参照してください。
このリリースの詳細については、 v5.7.0 リリースのハイライトを参照してください。
5.6 の新機能
Node.js ドライバー v5.6 リリースには、次の機能が含まれています。
ドライバーは Node.js v20 をサポートするようになりました。
ドライバーは、
runCursorCommand()
メソッドを呼び出すと、サーバーコマンドへの応答としてカーソルを返すことができます。 この機能について詳しくは、 runCursorCommand API ドキュメント を参照してください。時系列コレクション作成オプション bucketMaxSpanSeconds の指定をサポートするようになりました と bucketRoundingSeconds 。これらの時系列コレクション オプションの詳細については、サーバー マニュアルの「 時系列データの詳細な設定」を参照してください。
このリリースの詳細については、 v5.6.0 リリースのハイライトを参照してください。
5.5 の新機能
5.5 Node.js ドライバー リリースの新機能には、次のものが含まれます。
ドライバーは、
AWS_Lambda_
で始まる場合のみAmazon Web Servicesの環境変数を考慮して、 Amazon Web Servicesの Function-as-a-Service(FaaS)環境を正確に検出できるようになりました。Queryable Encryption 機能を使用して暗号化されたコレクションを作成する場合は、
mongodb-client-encryption
をバージョン 2.8.0 以降にアップグレードする必要があります。
このリリースの詳細については、 v5.5.0 リリースのハイライトを参照してください。
5.4 の新機能
5.4 Node.js ドライバー リリースの新機能には、次のものが含まれます。
重要
非推奨に関する通知
collStats
操作は非推奨です。 代わりに、 $collStats集計演算子を使用してください。db.command()
メソッドに渡されるTypescriptインターフェースに、特定のオプションが誤って含まれています。 これらのオプションは非推奨になりました。
ChangeStream.tryNext
メソッドでは、Document
インターフェースではなく、スキーマ固有のTChange
ジェネリック型が使用されるようになりました。
5.3 の新機能
5.3 Node.js ドライバー リリースの新機能には、次のものが含まれます。
重要
非推奨に関する通知
クエリや集計結果に反復的にアクセスできる
forEach()
カーソル メソッドは非推奨です。 代わりに、for await...of
構文を使用してください。addUser()
メソッドは非推奨です。 代わりにcreateUser()
を使用してください。keepAlive
とkeepAliveInitialDelay
接続オプションは非推奨です。BulkWriteResult
クラスに重複する機能を含むメソッドは非推奨です。 API ドキュメント を参照してください 非推奨のメソッドと推奨される代替手段の完全なリストは、 を参照してください。
クライアント メタデータに、サービスとしての関数(FaaS)の環境情報と代替のランタイム検出が含まれるようになりました。
ドライバーでは、末尾にドットを含む SRV レコード アドレスが許可されるようになりました。
UpdateResult.upsertedId
ドキュメントがアップデートされていない場合、null を返すようになりました。
5.2 の新機能
5.2 Node.js ドライバー リリースの新機能には、次のものが含まれます。
ドライバーは、自動 Queryable Encryption を使用するときに Azure 認証情報の自動取得をサポートするようになりました。
5.1 の新機能
5.1 Node.js ドライバー リリースの新機能には、次のものが含まれます。
ドライバーが
bigint
からBSON.Long
への JavaScript の自動直列化をサポートするようになりました また、useBigInt64
フラグが true として渡される場合に、サーバーから返されたBSON.Long
値からbigint
値への逆直列化もサポートされています。
5.0 の新機能
警告
v5.0 での重大な変更
このドライバー バージョンでは、重大な変更が導入されています。 これらの変更のリストについては、アップグレード ガイドの「バージョン 5.0 の重大な変更 」セクションを参照してください。
5.0 Node.js ドライバー リリースの新機能には、次のものが含まれます。
デフォルトでは、ドライバーは、
StrictFilter
型注釈が明示的に使用されていない限り、ドット表記で参照される型をチェックしなくなりました。 この変更の詳細については、 Typescript の基礎ページ を参照してください。注意
この変更は Typescript のみで、実行時にクエリや操作には影響しません。
ピア依存関係としての
@aws-sdk/credential-providers
の任意のインストール。ドライバーにはデフォルトでAmazon Web Services SDK モジュールが含まれなくなりました。 SDK をインストールするには、次の
npm
コマンドを使用します。npm install --save "@aws-sdk/credential-providers@^3.201.0" SDK をインストールすると、インストールした SDK のバージョンがドライバーと互換性がない場合、
npm
が通知します。 依存関係を正常にインストールすると、ドライバーはAmazon Web Services SDK 自体を使用して環境から認証情報を管理します。
4.17 の新機能
4.17 Node.js ドライバー リリースの新機能には、次のものが含まれます。
mongodb-js/saslprep
パッケージをドライバーの依存関係として追加します。Queryable Encryption 機能との互換性を改善します。
4.16 の新機能
4.16 Node.js ドライバー リリースの新機能には、次のものが含まれます。
ドライバー ハンドシェイク メタデータに Function-as-a-Service(FaaS)プラットフォーム情報を含めます。
クライアント メタデータで Deno ランタイムの使用を識別します。
4.15 の新機能
4.15 Node.js ドライバー リリースの新機能には、次のものが含まれます。
サービス アカウントのAmazon Web Services IAM ロール をサポートします。
4.14 の新機能
重要
v4.13 から v4.14 にアップグレード
このバージョンには、 v4.13 で導入されたメモリ リークに対する修正が含まれています。 v4.14 にアップグレードすることをお勧めします。
4.14 Node.js ドライバー リリースの新機能には、次のものが含まれます。
v4.13 で導入されたメモリ リークを修正しました。
レガシー ロガーを参照するメソッドとオプションが非推奨になりました。
4.13 の新機能
4.13 Node.js ドライバー リリースの新機能には、次のものが含まれます。
ドライバーがネットワーク タイムアウト エラーを発生させると、接続プール内の移動中の操作が自動的にキャンセルされます。
linearizable
およびavailable
の読み取り保証 (read concern) 設定との競合を防ぐために、暗黙的なセッションで因果整合性を無効にしました。接続が破棄されるたびにドライバーが
MessageStream
インスタンスを破棄するようにして、潜在的なメモリリークを修正しました。
4.12 の新機能
重要
ドライバーをバージョン 4.12.1 にアップグレード
4.12.1 Node.js ドライバーには、プロセスがクラッシュする可能性のあるモニタリング ロジックの回帰に対する修正が含まれています。
4.12 Node.js ドライバー リリースの新機能には、次のものが含まれます。
ChangeStream
クラスを非同期反復可能として再定義します。AsyncIterator
を必要とするコンテキストでは、ChangeStream
インスタンスを使用できます。さらに、変更ストリームはJavaScript
for-await
ループで使用できるようになりました。const changeStream = myColl.watch(); for await (const change of changeStream) { console.log("Received change: ", change); }
ドライバーが監視イベントをスキップするときにサーバー監視を修正します。 このリリースでは、ドライバーは監視イベントを処理するときに常にトポロジーのビューを更新します。
ドライバーの内部使用データ構造が変更された結果、バッファリングによるパフォーマンスの向上。
4.11 の新機能
監視における優先順位
MongoDB Server バージョン 6.0 以降に接続する場合、ドライバーはサーバー検出およびモニタリング イベント中にsetVersion
設定よりもelectionId
設定を優先します。 以前のバージョンでは、優先順位は逆でした。
Amazon Web Services認証の変更
オプションの aws-sdk/credential-providers
依存関係をインストールすると、ドライバーはAmazon Web Services SDK を使用して環境からAmazon Web Servicesの認証情報を検索します。
この動作の詳細については、 認証メカニズム ガイドの「 MONGODB-AWS 」セクションを参照してください。
相互再帰スキーマ タイプ チェック
このリリースには、相互再帰コレクション スキーマ タイプのサポートが追加されました。 また、このリリースではドット表記クエリに対して最大深度 8 までの型の安全性も提供します。 深度が「8」以上の場合、Typescript はコードを正常にコンパイルしますが、型の安全性は提供されません。 再帰型のこの深度制限は、 Typescriptの現在の制限です。
例
次の相互再帰型を含む、タイプCollection<Author>
のコレクションがあるとします。
interface Author { name: string; bestBook: Book; } interface Book { title: string; author: Author; }
Typescriptは型チェックを最大「8」の深度まで強制します。 次のコードでは、name
プロパティ値が string
型である必要があるため、 Typescriptコンパイル エラーが発生します。
myColl.findOne({ 'bestBook.author.bestBook.title': 25 });
深度が「8」以上の場合、 Typescriptはコードをコンパイルしますが、型チェックは行いません。 たとえば、次のコードはnumber
をstring
プロパティに割り当てますが、参照されるプロパティの深度が「10」であるため、コンパイル エラーは発生しません。
myColl.findOne({ 'bestBook.author.bestBook.author.bestBook.author.bestBook.author.bestBook.author.name': 25 });
4.10 の新機能
4.10 Node.js ドライバー リリースの新機能には、次のものが含まれます。
コールバックの廃止
コールバックは非推奨となり、代わりに Promise が採用されるようになりました。 コールバックは、次のメジャー リリースで削除される予定です。 Node ドライバー チームでは、可能な場合は Promise に移行することをお勧めします。
async/await
構文を使用します。Node.js Callbackify ユーティリティ を使用します。
require('util').callbackify(() => myColl.findOne())(callback) を使用 して 構文:
myColl.findOne().then(res => callback(null, res), err => callback(err))
大規模なコードベースで Promise に移行できない場合は 、任意のコールバック サポートを備えたレガシー Node.js ドライバーを使用できます。
4.9 の新機能
4.9 Node.js ドライバー リリースの新機能には、次のものが含まれます。
タイプ定義における
writeConcern
オプションとの不整合を修正しました。自動 UUID サポートを追加する最新の BSON リリースが含まれています。 See the BSON release notes here.
4.8 の新機能
重要
v4.8.0 から v4.8.1 にアップグレード
バージョン 4.8.1 は、v4.8.0 で導入された型回帰の問題を修正しています。 v4.8.1 にアップグレードすると、_id
演算子または 演算子を使用して更新を実行するときに、$set
$setOnInsert
値とサブドキュメントを指定できます。
4.8 Node.js ドライバー リリースの新機能には、次のものが含まれます。
アップデート フィルター内のネストされたキーのオートコンプリートとタイプの安全性を追加しました
client.startSession()
MongoDB に接続する前に呼び出せるようになりましたestimatedDocumentCount()
メソッドがコメントを受け入れることができるようになりました
4.7 の新機能
4.7 Node.js ドライバー リリースの新機能には、次のものが含まれます。
MongoDB インスタンスに接続するときに
MongoClient.connect()
メソッドが任意になりましたZstandard
圧縮アルゴリズムでメッセージを圧縮する機能maxConnecting
接続オプションのサポートを追加しました更新前と更新後にドキュメントを表示する変更ストリーム ドキュメントの機能
クラスター間のレプリケーションに関連する新しい変更ストリーム フィールドのサポートを追加しました
estimatedDocumentCount()
メソッドで$count
データベースコマンドが使用されるようになりました初期化フェーズでの への接続を改善しましたMongoDBAmazon Web ServicesLambda
重要
非推奨に関する通知
ResumeOptions
インターフェースは非推奨です。 代わりに、 ChangeStreamCursorOptions
インターフェースを使用してください。
4.6 の新機能
4.6 Node.js ドライバー リリースの新機能には、次のものが含まれます。
Typescriptの
ChangeStreamDocument
を改善しました。サーバー全体の負荷に基づいて、サーバーを選択する際の均等な分散。
4.5 で追加された機能
v4.5.0 リリースのハイライト を参照してください Github.
4.4 の新機能
4.4 Node.js ドライバー リリースの新機能には、次のものが含まれます。
CSFLE を使用する場合の KMIP プロバイダー サポート。
CSFLE を使用する場合の TLS サポート。
ホスト名の正規化で、GSSAPI を使用する場合、「none」、「forward」、「forwardAndReverse」を
authMechanismProperties
として受け入れるようになりました。ドライバーの 4.0.0 リリースでは、非推奨の
collection.count()
メソッドが誤ってcollection.countDocuments()
のように動作するように変更されました。 このリリースでは、collection.count()
メソッドがレガシー動作と一致するようにアップデートされます。クエリが指定された場合、
collection.count()
はcollection.countDocuments()
と同じように動作し、コレクションスキャンを実行します。クエリが指定されていない場合、
collection.count()
はcollection.estimatedDocumentCount()
と同じように動作し、コレクション メタデータに依存します。
重要
非推奨に関する通知
cursor.count()
メソッドは非推奨であり、次のメジャー バージョンでcollection.count()
とともに削除される予定です。collection.estimatedDocumentCount()
collection.countDocuments()
代わりに、 メソッドまたは メソッドを使用してください。
4.3 の新機能
4.3 Node.js ドライバー リリースの新機能には、次のものが含まれます。
SOCKS5 のサポート
UTF-8 検証を無効にするオプション
ネストされたドキュメントの型推論
4.2 の新機能
4.2 Node.js ドライバー リリースの新機能には、次のものが含まれます。
srvMaxHosts
およびsrvServiceName
DNS シードリスト接続オプション
4.1 の新機能
4.1 Node.js ドライバー リリースの新機能には、次のものが含まれます。
ClientSession
がクラスター時間を更新するかどうかを判断するためのadvanceClusterTime()
メソッドのサポートを追加しました。
4.0 の新機能
警告
v4.0 での重大な変更
このドライバー バージョンでは、重大な変更が導入されています。 これらの変更のリストについては、アップグレード ガイドの「バージョン4.0重大な変更 」セクションを参照してください。
4.0 Node.js ドライバー リリースの新機能には、次のものが含まれます。
重要
ドライバーのこのリリースでは、非推奨のcollection.count()
メソッドが誤って変更され、 collection.countDocuments()
のように動作するようになりました。 この動作はバージョン4.4で修正されています。
TypeScript
ドライバーをTypescriptに移行しました。 MongoDB アプリケーションを開発する際に、型ヒントとインテリジェンス機能をサポートするエディターで型ヒントとインテリジェンス機能を利用できるようになりました。 単純な JavaScript プロジェクトでも、この機能の利点を活用できます。
このバージョンで使用される基礎のBSONライブラリは、 Typescriptに移行されました。
エディターでの表示を改善するために、インライン ドキュメントが一貫してフォーマットされるようになりました。
コミュニティ タイプ
@types/mongodb
のユーザーの場合、コードベースからタイプを採用する際に問題が発生する可能性があります。 Typescriptでのコードベースの記述により、タイプの 1 対 1 の一致を実現できませんでした。
Typescript関連の機能リクエストをお読みください。 JIRA プロジェクトに関する提案は、ここから送信してください。
重要な変更
Node.js バージョン
Node.js でサポートされている最小バージョンは、ドライバーのバージョン 4 で v12.9 以降になりました。 3.x ブランチのサポートは 2022 年中間まで継続し、ユーザーがアップグレードにできる時間を確保します。
注意
3.x は Node.js v4 への戻りをサポートします。
カーソルの改善
カーソル の実装がアップデートされ、操作の実行前と実行後に可能な操作が明確になるようになりました。
例
const fc = myColl.find({a: 2.3}).skip(1) for await (const doc of fc) { console.log(doc) fc.limit(1) // incorrect usage, cursor already executing }
カーソルの実行が開始された後に 設定が適用された場合、カーソルがエラーを発生させる方法に関して一貫性がありませんでした。 現在、カーソルは、無効な状態で操作を適用しようとすると、次のようなエラーをスローします。
MongoError: Cursor is already initialized
影響を受けるクラス:
AbstractCursor
FindCursor
AggregationCursor
ChangeStreamCursor
(これはChangeStream
の基礎となるカーソルです)ListCollectionsCursor
カーソルストリーム API
カーソル型はReadable
を直接拡張しなくなりました。 これらはcursor.stream()
を呼び出してストリームに変換する必要があります。
例
const cursor = myColl.find({}); const stream = cursor.stream(); stream.on("data", data => console.log); stream.on("error", () => client.close());
手動反復処理にはhasNext()
とnext()
を使用します。 非同期反復には、 for await of
構文または任意のPromise
ヘルパーを使用します。
MongoClientOptions
インターフェース
タイプ ヒントを使用すると、 MongoClient
に渡されるオプションが列挙され、検索可能であることがわかります。 アプリを正しい状態ですばやく起動して実行するために、互換性のない設定に関する早期警告を発するために、ドライバーのすべてのオプションを処理するために多くの労力を費やしました。
checkServerIdentity
は、基礎の Node API に渡される前にチェックされなくなりました。 以前は、許容値はfalse
または 関数 でした。 ここで、引数は関数である必要があります。 ブール値を指定すると、エラーがスローされます。useUnifiedTopology
またはuseNewUrlParser
を指定する必要がなくなりました。
createCollection()
このメソッドは、コレクションが存在しない場合にエラーを返すstrict
オプションのサポートを終了しました。 コレクションの存在をアサートするには、代わりにlistCollections()
メソッドを使用します。
例
const collections = (await db.listCollections({}, { nameOnly: true }) .toArray()).map( ({name}) => name ); if (!collections.includes(myNewCollectionName)) { throw new Error(`${myNewCollectionName} doesn't exist`); }
BulkWriteError
→ MongoBulkWriteError
BulkWriteError
の名前がMongoBulkWriteError
に変更されました。
書き込みを行う一括操作を実行すると、 の設定によってはエラーが発生する可能性があります。 一括操作でエラーをテストするときに、新しいクラス名MongoBulkWriteError
をインポートします。
DB
DB
はEventEmitter
ではなくなりました。 MongoClient
インスタンスから直接イベントをリッスンします。
Collection.group()
MongoDB 3.4以降では非推奨となっているCollection.group()
ヘルパーが削除されました。 代わりに、集計パイプライン$group演算子を使用してください。
認証
gssapiServiceName
は削除されました。 authMechanismProperties.SERVICE_NAMEMongoClientOptions
の 使用 URI の または のオプションとして。例
?authMechanismProperties.SERVICE_NAME // or new MongoClient(url, { SERVICE_NAME: "alternateServiceName" }) オプションとしてのユーザー名とパスワードの指定は、 URI で または
MongoClientOptions
のオプションとしてのみサポートされます。例
new MongoClient("mongodb://<db_username>:<db_password>@<host><port>") // or new MongoClient(url, { auth: { username: "<db_username>", password: "<db_password>" } })
GridStore
削除
GridStore API( 3 .x ですでに非推奨)はGridFSBucket
に置き換えられました。 GridFS
の詳細については、 MongoDBマニュアルを参照してください。
以下は、同等の操作を表すいくつかのスニペットです。
構築
例
// old way const gs = new GridStore(db, filename, mode[, options]) // new way const bucket = new GridFSBucket(client.db('test')[,options])
ファイル検索
GridFSBbucket は Node.js Stream API を使用します。 start
とend
オプションを使用してファイル検索を複製し、 GridFSBucket
からダウンロード ストリームを作成できます。
例
bucket.openDownloadStreamByName(filename, { start: 0, end: 100 })
ファイルのアップロードとダウンロード
例
await client.connect(); const filename = 'test.txt'; // whatever local file name you want const db = client.db(); const bucket = new GridFSBucket(db); fs.createReadStream(filename) .pipe(bucket.openUploadStream(filename)) .on('error', console.error) .on('finish', () => { console.log('done writing to db!'); bucket .find() .toArray() .then(files => { console.log(files); bucket .openDownloadStreamByName(filename) .pipe(fs.createWriteStream('downloaded_' + filename)) .on('error', console.error) .on('finish', () => { console.log('done downloading!'); client.close(); }); }); });
注意
GridFSBucket
はGridStore
のように閉じる必要はありません。
ファイルの削除
例
// old way GridStore.unlink(db, name, callback); // new way bucket.delete(file_id);
ファイル メタデータの検索
GridStore
インスタンスでアクセス可能であったファイル メタデータは、 バケットをクエリすることで見つかります。
例
const fileMetaDataList: GridFSFile[] = bucket.find({}).toArray();
統合トポロジー
mongod
に接続した場合にのみunifiedTopology
を内部的に管理するようになりました。 このバージョンと以前のバージョンの違いは、 ここで詳しく説明します。useUnifiedTopology
またはuseNewUrlParser
を指定する必要がなくなりました。新しい
directConnection
オプション を使用する必要があります 初期化されていないレプリカセット メンバーに接続します。
explain
きめ細かな冗長モードのサポートが追加されました。 各モードの詳細については、こちらをご覧ください。
コマンド監視
instrument()
メソッドが削除されました。 代わりに、コマンド モニタリングを使用してください。 詳細については、コマンド監視に関するガイドを参照してください。
3.7 の新機能
3.7 Node.js ドライバー リリースの新機能には、次のものが含まれます。
useUnifiedTopology
オプションを有効にしながら、ロード バランサー モードのサポートを追加しましたuseUnifiedTopology
オプションを有効にしながらStable APIのサポートを追加しました
3.6 の新機能
3.6 Node.js ドライバー リリースの新機能には、次のものが含まれます。
MONGODB- Amazon Web Services Amazon Web Services ( Amazon Web Services )の IAM(Identity and Access Management、ID とアクセス管理)認証情報を使用する Amazon Web Services 認証メカニズムのサポートを追加しました
find()
allowDiskUse()
メソッドは、RAM で実行するために多くのメモリを必要とするソートにサポートしますupdate( ) メソッドとreplaceOne()メソッドはインデックスのヒントをサポートします
トポロジーの変更とフェイルオーバー イベントのリカバリ時間の短縮
デフォルトのwriteConcernの検証テストを改善しました
認証に必要なサーバーへのラウンドトリップが少なくなり、接続設定が高速化されます
Salted Challenge Response Authentication Mechanism( SCRAM )の対話の短縮
複数のドキュメントトランザクションのコレクションとインデックスを作成する機能
バックグラウンドでのコレクションの検証の実行