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, name2: "Alice" }
db.people.find( { name: null } )

MongoDB 8.0より前では、上記のクエリは次のドキュメントと一致します。

  • nameフィールドはnull_id: 1

  • nameフィールドはundefined_id: 2

  • nameフィールドは存在しません( _id: 3

MongoDB 8.0以降では、上記のクエリは、 nameフィールドがundefined_id: 2 )であるドキュメントと一致しません。

nameundefinedであるドキュメントを検索するには、クエリでundefined型を明示的に指定する必要があります。 たとえば、次のクエリはすべてのサンプル ドキュメントを返します。

db.people.find( {
$or: [
{ name: null },
{ name: { $type: "undefined" } }
]
} )

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

  • $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を使用します。

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