クエリ動作
「null は未定義のフィールドと一致しない」のクエリ
MongoDB 8.0以降、等価一致式で nullと比較しても、 undefined値と一致しません。
たとえば、これらのドキュメントとクエリについて考えてみます。
// create the people collection db.people.insertMany( [ { _id: 1, name: null }, { _id: 2, name: undefined }, { _id: 3, name: [ "Gabriel", undefined ] }, { _id: 4, names: [ "Alice", "Charu" ] } ] )
db.people.find( { name: null } )
MongoDB 8.0より前では、上記のクエリは次のドキュメントと一致します。
nameフィールドはnull(_id: 1)nameフィールドはundefinedであるか、 またはundefined配列要素を含みています(_id: 2と_id: 3)nameフィールドは存在しません(_id: 4)
MongoDB 8.0 以降では、上記のクエリでは、nameフィールドが undefined であるか、 または undefined 配列要素が含まれているドキュメントは一致しません。 クエリは、次の条件を満たすドキュメントのみに一致します。
nameフィールドはnullであるか、 またはnull配列要素を含みています(_id: 1)nameフィールドは存在しません(_id: 4)
このクエリ動作の変更は、次の操作にも影響します。
この動作の変更を考慮してクエリを書き換える方法やデータを移行する方法については、「 未定義のデータとクエリの移行 」を参照してください。
非推奨
非推奨 | 説明 |
|---|---|
LDAP | MongoDB 8.0以降、 LDAP認証と認可は非推奨です。 LDAP は使用可能であり、 MongoDB 8のサポート期間中に変更されずに動作し続けます。 LDAP は将来のメジャー リリースで削除される予定です。 詳細については、「 LDAP の廃止 」を参照してください。 LDAP移行情報は将来利用可能になる予定です。 |
ヘッジされた読み取り | MongoDB 8.0以降、ヘッジされた読み取りは非推奨です。 読み込み設定(read preference |
インデックス フィルター | バージョン8.0では非推奨 。 MongoDB 8.0以降では、インデックス フィルターを追加する 代わりに、 クエリ設定を使用します 。 インデックス フィルターは MongoDB 8.0以降非推奨です。 クエリ設定は、インデックス フィルターよりも多くの機能を持ちます。 また、インデックス フィルターは永続的ではなく、すべてのクラスター ノードに対してインデックス フィルターを簡単に作成することはできません。 クエリ設定を追加して例を探すには、 |
サーバーサイド JavaScript 関数 | MongoDB 8.0以降、サーバーサイド JavaScript 関数( |
| MongoDB 8.0では |
| MongoDB 8.0では |
| 警告MongoDB 8.0 以降、 |
| MongoDB 8.0では |
| MongoDB 8.0 以降、 Queryable Encryptionコレクションで |
下位互換性のない機能
シャードに直接接続してコマンドを実行することはできません
MongoDB8.0 以降では、シャーディングされたクラスター内のノードでは特定のコマンドのみを実行できます。ノードに直接接続してサポートされていないコマンドを実行しようとすると、 MongoDB はエラーを返します。
"You are connecting to a sharded cluster improperly by connecting directly to a shard. Please connect to the cluster via a router (mongos)."
サポートされていないデータベースコマンドをシャーディングされたクラスター内のノードに対して直接実行するには、mongos に接続するか、メンテナンス専用の directShardOperations ロールが必要です。
MongoDB は、シャードに対して コマンドを直接実行できるようにすることで、レプリカセットから1シャード クラスターへのオンライン移行をサポートしています。 ただし、クラスターに複数のシャードがある場合は、リストされているコマンドのみが、メンテナンス専用のdirectShardOperationsロールなしでシャードに対して直接実行できます。
書込み保証 (write concern) の過半数
MongoDB 8.0以降、 "majority"書込み保証 ( 書込み保証 (write concern) ) を使用する書込み操作は、レプリカセットノードの過半数が変更のoplogエントリを書込んだときに確認応答を返します。 これにより、 "majority"書き込みのパフォーマンスが向上します。 以前のリリースでは、これらの操作はレプリカセットの過半数が変更を適用した後、待機して確認応答を返していました。
oplogバッファ
MongoDB 8.0以降、セカンダリは各バッチの oplog エントリを並列に書込み、適用します。 これにより、 metrics.repl.bufferステータス メトリクスに重大な変更が導入され、1 つではなく 2 つのバッファに関する情報が提供されるようになりました。
MongoDB 8.0では、次のサーバー ステータス メトリクスが非推奨になります。
これらは、次のメトリクスに置き換えられます。
一般的な変更点
シャットダウン パフォーマンス
MongoDB 8.0以降では、 Bulk.insert()およびデータ取り込みワークロードのパフォーマンスが向上する可能性があります。 ただし、これらのワークロードを実行した後すぐに MongoDB をシャットダウンすると、余計なデータがディスクにフラッシュされるため、時間がかかる可能性があります。
同時圧縮コマンドは許可されていない
MongoDB 8.0以降、同じコレクションに対して複数のcompactコマンドを同時に実行しようとすると、MongoDB はエラーを返します。
地理空間入力の検証
MongoDB 8.0以降では、不正な入力を含む地理空間クエリは使用できません。 以前のバージョンでは、特定の地理空間クエリはエラーなしで不正な入力を受け入れていました。
OIDC IdP は発行者を共有できます
MongoDB 8.0以降では、複数の ID プロバイダー(IDP)が定義されている場合、 audience値が各発行者に対して一意である限り、 oidcIdentityProvidersパラメータは重複するissuer値を受け入れます。 これは、バージョン7.3および7でも利用できます。 0 。
削除されたパラメーター
MongoDB 8.0 では storeFindAndModifyImagesInSideCollection パラメータが削除されます。
serverStatus 出力の変更
MongoDB 8.0以降、 wiredTiger.concurrentTransactionsの名前はqueues.executionに変更されます。
時系列 system.buckets コレクション
MongoDB8.0 にアップグレードする際に、時系列コレクションではないsystem.buckets コレクションがある場合は、drop renameに応じて、アップグレードする前にそれらのコレクションを または8 する必要があります。0 パッチ リリース:
- MongoDB 8.0.5 以降
- アップグレードする前に、時系列コレクションではない
system.bucketsコレクションを削除する必要はありません。ただし、アップグレードが完了した後に、これらを削除するか、名前を変更する必要があります。 - MongoDB 8.0.4 以前
- アップグレードする前に、時系列コレクションではない
system.bucketsコレクションを削除するか、名前を変更する必要があります。すべてのsystem.bucketsコレクションは、 8.0.0-8.0.4 のバージョンにアップグレードする前に、有効な時系列オプションを構成する必要があります。
時系列コレクションではない system.buckets コレクションがあるかどうかを判断するには、フィルタを指定した db.getCollectionInfos() メソッドを使用します。
db.getCollectionInfos( { $and: [ { name: { $regex: /^system\.buckets/ } }, { 'options.timeseries': { $exists: false } } ] } )
存在しないフィールドによるソート
存在しないフィールドでソートする場合、 MongoDB は特定の出力順序を保証しません。このような場合の動作は、バージョンによって異なる場合があります。
集計
$rank と の動作$denseRank
MongoDB 8.0以降、 $denseRankおよび$rank sortBy操作のnullと欠落しているフィールド値は、ランキングを計算するときに同じように扱われます。 この変更により、 denseRankとrankの動作が$sortと一貫性が生じます。
$shardedDataDistribution 出力
MongoDB 以降、 は、プライマリシャードに8.0 $shardedDataDistributionチャンク または 孤立したドキュメント がある場合にのみ、コレクションの プライマリシャード の出力を返します。
アップグレードされた TCMalloc
MongoDB 8.0以降、 MongoDBは、メモリのフラグメント化を減らし、高負荷のワークロードに対するデータベースの回復力を高めます。
より優れたパフォーマンスで新しい TCMalloc を使用するには、「自己管理型配置の TCMalloc パフォーマンスの最適化 」を参照してください。
tcmallocReleaseRate パラメーター
MongoDB8.0 以降、tcmallocReleaseRate は TCMalloc 解放率 を 1 秒あたりのバイト数で指定し、 のデフォルト値はtcmallocReleaseRate 0に減算されます。
以前のバージョンでは、 MongoDB は次のような古いバージョンの tcmalloc を使用していました。
デフォルトの
tcmallocReleaseRateを1に設定します。0から10までのtcmallocReleaseRateの値を受け入れました。