Docs Menu
Docs Home
/
MongoDBマニュアル
/ /

MongoDB 8.0での互換性の変更

項目一覧

  • クエリ動作
  • 非推奨
  • 下位互換性のない機能
  • 一般的な変更点
  • 集計

MongoDB 8.0以降、等価一致式で nullと比較しても、 undefined値と一致しません。

たとえば、これらのドキュメントとクエリについて考えてみます。

// people collection
[
{ _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

このクエリ動作の変更は、次の操作にも影響します。

  • $eq

  • $in

  • $lookupは、 nullのローカルフィールドがundefinedの外部フィールドと一致しなくなったためです。

この動作の変更を考慮してクエリを書き換える方法やデータを移行する方法については、「 未定義のデータとクエリの移行 」を参照してください。

非推奨
説明
LDAP

MongoDB 8.0以降、 LDAP認証と認可は非推奨です。 LDAP は使用可能であり、 MongoDB 8のサポート期間中に変更されずに動作し続けます。 LDAP は将来のメジャー リリースで削除される予定です。

詳細については、「 LDAP の廃止 」を参照してください。

LDAP移行情報は将来利用可能になる予定です。

ヘッジされた読み取り

MongoDB 8.0以降、ヘッジされた読み取りは非推奨です。 読み込み設定(read preference nearestを指定するクエリは、デフォルトでヘッジされた読み取りを使用しなくなりました。 ヘッジされた読み取りを明示的に指定すると、MongoDB はヘッジされた読み取りを実行し、警告をログに記録します。

インデックス フィルター

バージョン8.0では非推奨 。

MongoDB 8.0以降では、インデックス フィルターを追加する 代わりに、 クエリ設定を使用します 。 インデックス フィルターは MongoDB 8.0以降非推奨です。

クエリ設定は、インデックス フィルターよりも多くの機能を持ちます。 また、インデックス フィルターは永続的ではなく、すべてのクラスター ノードに対してインデックス フィルターを簡単に作成することはできません。 クエリ設定を追加して例を探すには、 setQuerySettingsを参照してください。

サーバーサイド JavaScript 関数

MongoDB 8.0以降、サーバーサイド JavaScript 関数( $accumulator$function$where )は非推奨です。 MongoDB では、これらの関数を実行すると警告がログに記録されます。

tcmallocAggressiveMemoryDecommit
MongoDB 8.0ではtcmallocAggressiveMemoryDecommitパラメータが非推奨になります。
enableFinerGrainedCatalogCacheRefresh
MongoDB 8.0ではenableFinerGrainedCatalogCacheRefreshパラメータが非推奨になります。
timeField 時系列コレクション用のシャードキー内

MongoDB 8.0 以降、時系列コレクションでシャードキーとして timeField を使用することは非推奨になります。

cleanupOrphaned
MongoDB 8.0ではcleanupOrphanedコマンドが非推奨になります。 孤立したドキュメントが残っていないことを確認するには、代わりに$shardedDataDistributionを使用します。
rangePreview

MongoDB 8.0 以降、rangePreview Queryable Encryptionアルゴリズムは非推奨となり、削除されました。代わりに Rangeアルゴリズムを使用してください。

Queryable Encryptionコレクションで rangePreview が使用されている場合は、 MongoDB 8.0 にアップグレードする前に、コレクションを削除する必要があります。

MongoDB 8.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ロールなしでシャードに対して直接実行できます。

MongoDB 8.0以降、 "majority"書込み保証 ( 書込み保証 (write concern) ) を使用する書込み操作は、レプリカセットノードの過半数が変更のoplogエントリを書込んだときに確認応答を返します。 これにより、 "majority"書き込みのパフォーマンスが向上します。 以前のリリースでは、これらの操作はレプリカセットの過半数が変更を適用した後、待機して確認応答を返していました。

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以降では、不正な入力を含む地理空間クエリは使用できません。 以前のバージョンでは、特定の地理空間クエリはエラーなしで不正な入力を受け入れていました。

MongoDB 8.0以降では、複数の ID プロバイダー(IDP)が定義されている場合、 audience値が各発行者に対して一意である限り、 oidcIdentityProvidersパラメータは重複するissuer値を受け入れます。 これは、バージョン7.3および7でも利用できます。 0 。

MongoDB 8.0以降、 wiredTiger.concurrentTransactionsの名前はqueues.executionに変更されます。

MongoDB 8.0以降、 $denseRankおよび$rank sortBy操作のnullと欠落しているフィールド値は、ランキングを計算するときに同じように扱われます。 この変更により、 denseRankrankの動作が$sortと一貫性が生じます。

MongoDB 以降、 は、プライマリシャードに8.0 $shardedDataDistributionチャンク または 孤立したドキュメント がある場合にのみ、コレクションの プライマリシャード の出力を返します。

詳細については、$shardedDataDistribution を参照してください。

MongoDB 8.0以降、 MongoDBは、メモリのフラグメント化を減らし、高負荷のワークロードに対するデータベースの回復力を高めます

より優れたパフォーマンスで新しい TCMalloc を使用するには、「自己管理型配置の TCMalloc パフォーマンスの最適化 」を参照してください。

戻る

8.0 (安定版リリース)