新機能
項目一覧
次の新機能をご覧ください。
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 以降にアップグレードする必要があります。
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 での重大な変更
Node.js ドライバーのバージョン 5.0 は、Node.js v12 またはそれ以前のバージョンと互換性がありません。 このバージョンのドライバーを使用する場合は、 Node.js v14.20.1 以降を使用する必要があります。
このリリースでは、Promise ベースの API が採用されるよう、コールバックのサポートが排除されます。 次のリストは、コールバック ユーザーがこのバージョンを採用するためのいくつかの戦略を示しています。
Promise ベースの API に移行する(推奨)
Promise ベースの API と
util.callbackify
コールバックを引き続き使用するには、
mongodb-legacy
を追加します
これらの戦略の詳細について は、「 MongoDB Node.js ドライバー v の変更 」を参照してください。5
このリリースでは、
Collection.insert()
、Collection.update()
、Collection.remove()
ヘルパー メソッドのサポートが削除されます。 次のリストでは、削除されたメソッドの機能を置き換える方法を示しています。Collection.insert()
からinsertOne()
またはinsertMany()
に移行しますCollection.update()
からupdateOne()
またはupdateMany()
に移行しますCollection.remove()
からdeleteOne()
またはdeleteMany()
に移行します
このバージョンで導入された重大な変更の完全なリストを表示するには、アップグレード ガイドの「重大な変更 」セクションを参照してください。
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 の新機能
重要
ドライバーのこのリリースでは、非推奨のcollection.count()
メソッドが誤って変更され、 collection.countDocuments()
のように動作するようになりました。 この動作はバージョン4.4で修正されています。
4.0 Node.js ドライバー リリースの新機能には、次のものが含まれます。
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://username:password@<host><port>") // or new MongoClient(url, { auth: { username: "<>", 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 )の対話の短縮
複数のドキュメントトランザクションのコレクションとインデックスを作成する機能
バックグラウンドでのコレクションの検証の実行