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

MongoDB 6.0 での互換性の変更

項目一覧

  • 集計
  • 変更ストリーム
  • Indexes
  • レガシー mongo シェルの削除
  • プラットフォーム サポート
  • 正規表現
  • 削除された演算子
  • 削除されたオプション
  • 削除されたパラメーター
  • 名前が変更されたパラメータ
  • NaN に設定した場合の TTL expireAfterSeconds 動作
  • レプリカセット
  • セキュリティ
  • 時系列コレクション
  • 一般的な変更点
  • ダウングレードの考慮事項

このページでは、MongoDB 6.0 で導入された、古いバージョンの MongoDB との互換性に影響を与える可能性のある変更について説明します。

MongoDB 6.0 はメジャー リリースであるため、MongoDB Atlas とオンプレミスの配置の両方でサポートされます。MongoDB 6.0 には、MongoDB Rapid Release 5.1、5.2、および 5.3 で導入された変更が含まれています。このページでは、これらの Rapid Release と MongoDB 6.0 で導入された互換性の変更について説明します。

メジャー リリースと Rapid Release の違いの詳細については、「 MongoDB のバージョン管理 」を参照してください。

MongoDB 6.0 以降、 100 MB 以上のメモリを必要とするパイプライン ステージでは、デフォルトで一時ファイルをディスクに書き込みます。これらの一時ファイルはパイプラインの実行中ずっと残り、インスタンスのストレージ容量に影響を与える可能性があります。以前のバージョンの MongoDB では、この動作を有効にするには、個々の find コマンドと aggregate コマンドに { allowDiskUse: true } を渡す必要がありました。

個々の findaggregate コマンドは、次のいずれかの方法で allowDiskUseByDefault パラメーターを上書きできます。

  • allowDiskUseByDefaultfalse に設定されている場合に { allowDiskUse: true } を使用して一時ファイルをディスクに書き込むことを許可する

  • allowDiskUseByDefaulttrue に設定されている場合に { allowDiskUse: false } を使用して一時ファイルがディスクに書き込むことを禁止する

MongoDB 6.0 700} 以降では、Atlas Search $$SEARCH_META集計変数は、任意のパイプラインのどこでも $searchステージの後に使用できますが、どのパイプラインの$lookupまたは$unionWithステージ以降では使用できません。 $$SEARCH_META集計変数は、 $searchMetaステージ以降のどのステージでも使用できません。

MongoDB 5.3 以降では、範囲の移行 中に、孤立したドキュメントの更新に対して 変更ストリームイベントは生成されません。

MongoDB 6.0 以降では可能な限り、一致フィルターが変更ストリームに適用される時期が以前のリリースより早くなっています。これにより、パフォーマンスが向上します。ただし、フィルターが狭く定義されている場合は、早期に一致させることで、以前のバージョンでは成功する操作が 6.0 では失敗する可能性があります。

MongoDB 6.0 以降では、"*"dropIndexes または db.collection.dropIndexes() に渡すと、_idインデックスと最後に残っているシャードキー インデックス(存在する場合)を除くすべてのインデックスが削除されます。最後に残っているシャードキー インデックスを明示的に削除しようとすると、エラーが発生します。

MongoDB 5.2 以降では、インデックス構築が進行中の場合でも、dropIndexes または db.collection.dropIndexes() を使用して同じコレクション上の既存のインデックスを削除できます。以前のバージョンでは、インデックス構築が進行中に別のインデックスを削除しようとすると BackgroundOperationInProgressForNamespace エラーが発生していました。

メモリ不足エラーを防ぐために、indexMaxNumGeneratedKeysPerDocument は 1 つのドキュメントに対して生成される 2dsphere インデックス キーの最大数を制限します。

indexMaxNumGeneratedKeysPerDocument を参照してください。

MongoDB 6.0 以降では、一意なインデックスキー形式への変更が導入されました。MongoDB 6.0 で一意なインデックスを作成した場合、そのインデックスは 5.3.2 や 5.0.7 より前のバージョンの MongoDB では機能しません。

mongo shell は MongoDB 6.0 から削除されました。mongosh. が代替として提供されています。

MongoDB 5.1.2 以降、次のプラットフォームはサポートされなくなりました。

  • RHEL-72-s390x

MongoDB 5.1 以降、無効な $regex options オプションが無視されなくなりました。この変更により、$regex options は、aggregate コマンドおよびプロジェクション クエリでの $regex の使用との一貫性が向上します。

MongoDB 5.1 以降では、コレクションに無効な $regex options を含む スキーマ検証 ルールがある場合、サーバーは次のように動作します。

  • 無効な正規表現パターンを含むスキーマ検証ルールが collMod コマンドで変更されるまで、すべての挿入操作と更新操作を阻止します。

  • 警告エラーを mongod ログファイルに書込み (write) ます。

MongoDB 5.1 以降、以下のレガシーなクエリ演算子は削除されました。

削除された演算子
代替
$comment
$explain
$hint
$max
$maxTimeMS
$min
$orderby
$query
$returnKey
$showDiskLoc
db.getLastError()
削除されたレガシー命令コード」を参照してください。
db.getLastErrorObj()
削除されたレガシー命令コード」を参照してください。
getLastError
削除されたレガシー命令コード」を参照してください。

MongoDB 6.0 では、--cpu mongod オプションが削除されます。

MongoDB 6.0 では、次のサーバー パラメータが削除されます。

削除されたパラメータ
説明

このオプションは MongoDB コミュニティ エディション から削除されました。MongoDB Enterprise エディションで利用できます。

FIPS は MongoDB コミュニティ エディション ではサポート外の機能でした。インストールで FIPS が使用されている場合は、アップグレードする前に TLS/SSL 接続を再構成する必要があります。

MongoDB 6.0 以降では、次のパラメータの名前が変更されました。

TTL expireAfterSecondsNaNに設定すると、MongoDB 4.4から MongoDB 6.0への動作が変更され、MongoDB 4.4以前と MongoDB 4からのmongorestoreからの最初の同期に影響します。 4以前 これらのアクションのいずれかを実行すると、 NaNexpireAfterSeconds0expireAfterSecondsとして扱われます。 その結果、ドキュメントの有効期限がすぐに切れる可能性があります。

MongoDB 5.1 以降では、sh.addShard()シャード サーバーを起動、再起動または追加する際に、クラスター全体の書込み保証(CWWC)を設定する必要があります。

CWWC が設定されておらず、デフォルトの書込み保証(write concern){ w : 1 } になるようにシャードが構成されている場合、シャード サーバーは起動または追加に失敗し、エラーが返されます。

デフォルトの書込み保証(write concern)の詳細な計算方法については、「デフォルトの書込み保証の計算」を参照してください。

MongoDB 5.1 以降では、新しいレプリカセットデフォルトの書込み保証 (write concern) を変更する reconfigs を発行する前に、クラスター全体の書込み保証 (CWWC) を設定する必要があります。

MongoDB 5.3 以降では、クラスター内認証に SCRAM-SHA-1 は使用できません。SCRAM-SHA-256 のみがサポートされます。

前の MongoDB バージョンでは、SCRAM が明示的に有効になっていなくても、SCRAM-SHA-1 と SCRAM-SHA-256 の両方をクラスター内認証に使用できます。

MongoDB 5.1 以降、FIPS モードで実行中のインスタンスでは、SCRAM-SHA-1 認証メカニズムがデフォルトで無効になっています。setParameter.authenticationMechanisms コマンドを使用して SCRAM-SHA-1 認証メカニズムを有効にできます。

この変更は、MongoDB setFeatureCompatibilityVersion 4.0 以降を対象とするドライバーには影響しません。

MongoDB 6.0 以降では、最初の同期中に ocspEnabledtrue に設定された場合、すべてのノードがOCSPレスポンダに到達できるはずです。

ノードが STARTUP2 状態で失敗した場合、tlsOCSPVerifyTimeoutSecs5 未満の値に設定します。

警告

MongoDB 5.1 以降でシャーディングされた時系列コレクションを作成した場合、MongoDB 5.0.4 より前のバージョンにダウングレードするとデータが失われます。

5.0.4 より古いバージョンにダウングレードする前に、シャーディングされた時系列コレクションをすべて削除します。

時系列コレクションにセカンダリインデックスがあり、機能の互換性バージョン(fCV)をダウングレードする必要がある場合は、ダウングレードした fCV と互換性のないセカンダリインデックスを最初に削除する必要があります。詳細については、setFeatureCompatibilityVersionを参照してください。

非推奨
説明
db.collection.reIndex() メソッドは MongoDB v6.0 では非推奨です。
reIndex コマンドは MongoDB v6.0 では非推奨です。
簡易ネットワーク マネジメント プロトコル (SNMP)

MongoDB 6.0以降、 SNMP は非推奨であり、次のリリースで削除される予定です。 配置を監視するには、 MongoDB Ops Managerを使用します。

MongoDB 5.1 (および5.0.4 )以降、 divisorまたはremainderの値が特定の値に評価されると、 $mod演算子はエラーを返します。 $mod の動作 を参照してください。

MongoDB 6.0 では、次のレガシー命令コードとデータベースコマンドのサポートが削除されます。

警告

ドライバーのアップグレード

これらの命令コードの削除による中断を避けるため、ドライバを最新バージョンにアップグレードしてください

MongoDB 5.1 以降の mongo shell を使用して MongoDB 3.4 以前の mongod インスタンスに接続しようとすると、次のようなエラーメッセージが表示されます。

Connection handshake failed. Is your mongod 3.4 or older?
:: caused by :: network error while attempting to run command
'isMaster' on host '127.0.0.1:27017'

MongoDB 3.6 以降、MongoDB ドライバーは OP_QUERY やその他のレガシー命令コード、コマンドの代わりに OP_MSG を使用しています。

MongoDB 6.0 以降:

注意

OP_QUERY RPC コマンド

OP_QUERY RPC プロトコルは、次のコマンドで使用できます。

  • _isSelf

  • authenticate

  • buildinfo

  • buildInfo

  • hello

  • ismaster

  • isMaster

  • saslContinue

  • saslStart

OP_QUERY として発行された場合、他のすべてのコマンドは拒否されます。

MongoDB 6.0では、サーバーサイド JavaScript$accumulator$function$where 式に使用される内部 JavaScript エンジンが MozJS-60 から MozJS-91 にアップグレードされています。MozJS-60に存在した非推奨、非標準の配列関数と文字列関数は、MozJS-91 で一部削除されました。

削除された配列関数と文字列関数の完全なリストについては、このページの次のセクションを参照してください。

注意

静的関数のみ削除

静的な JavaScript 関数のみが削除されます。削除された関数に相当するプロトタイプ関数は引き続き使用できます。

以下に例を挙げます。

  • Array.concat(<array1>, <array2>) は静的関数であり、MongoDB 6.0 では動作しなくなりました。

  • <array1>.concat(<array2>) はプロトタイプ関数であり、MongoDB 6.0 でも引き続き動作します。

この動作は、削除された配列関数と削除された文字列関数の両方に適用されます。

MongoDB 6.0 以降、次の配列関数は削除され、$accumulator$function、および $where 式を含むサーバーサイド JavaScript で使用できなくなります。

  • Array.concat

  • Array.every

  • Array.filter

  • Array.forEach

  • Array.indexOf

  • Array.join

  • Array.lastIndexOf

  • Array.map

  • Array.pop

  • Array.push

  • Array.reduce

  • Array.reduceRight

  • Array.reverse

  • Array.shift

  • Array.slice

  • Array.some

  • Array.sort

  • Array.splice

  • Array.unshift

MongoDB 6.0 以降、次の配列関数は削除され、$accumulator$function、および $where 式を含むサーバーサイド JavaScript で使用できなくなります。

  • String.charAt

  • String.charCodeAt

  • String.concat

  • String.contains

  • String.endsWith

  • String.includes

  • String.indexOf

  • String.lastIndexOf

  • String.localeCompare

  • String.match

  • String.normalize

  • String.replace

  • String.search

  • String.slice

  • String.split

  • String.startsWith

  • String.substr

  • String.substring

  • String.toLocaleLowerCase

  • String.toLocaleUpperCase

  • String.toLowerCase

  • String.toUpperCase

  • String.trim

  • String.trimLeft

  • String.trimRight

MongoDB 6.0 以降では、dbStats コマンドと db.stats() メソッドは、freeStorage パラメータが 1 に設定されている場合にのみ、コレクションに割り当てられた空き領域を報告します。

MongoDB 6.0 以降、インデックス フィルターは、以前はplanCacheSetFilter コマンドを使用して設定されていた照合を使用します。

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

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

MongoDB 6.0 以降では、配列を使用する場合、distinct コマンドはコレクションとビューに対して同じ結果を返します。

コレクションとビュー内の配列」を参照してください。

次のセクションでは、配置から下位互換性のない機能を削除するための情報を提供します。MongoDB 6.0 から以前のバージョンにダウングレードする場合は、以下のセクションを確認して、ダウングレード後に配置が正常に実行されることを確認してください。

MongoDB 5.3 以降では、クラスター化されたコレクションを使用している場合、以前の MongoDB バージョンにダウングレードする前に、それらのコレクションを削除する必要があります。

MongoDB 6.0 以降では、機能の互換性バージョンをダウングレードする必要がある場合は、クラスター間のレプリケーションとユーザー書込みブロックを無効にしてください。

Cluster-to-Cluster Sync とユーザー書き込みのブロック」を参照してください。

以下のダウングレードを行う前に、時系列コレクションを削除する必要があります。

  • MongoDB 6.0 以降から MongoDB 5.0.7 またはそれ以前のバージョンへ

  • MongoDB 5.3 から MongoDB 5.0.5 以前のバージョンへ

時系列コレクション」を参照してください。

MongoDB 6.0 以降では、すべての setClusterParameter 操作が完了していることを確認してください。シャーディングされたクラスターで実行中の setClusterParameter 操作がある場合、 fCV のダウングレードは正常に実行されません。

MongoDB 5.1 以降で MongoDB の前のバージョンにダウングレードするには、SELinux ポリシーのクローンが過去に作成されたディレクトリから次のコマンドをダウングレード前に実行する必要があります。

sudo make uninstall

MongoDB 6.0 以降では、デフォルトの KMIP プロトコル バージョンは 1.2 です。KMIP バージョン 1.0 または 1.1 を使用するには、useLegacyProtocol 設定を使用します。

MongoDB 5.3 Enterprise 以降では、次の KMIP 設定を使用している場合、以前の MongoDB バージョンにダウングレードする前に、構成ファイルからそれらを削除する必要があります。

MongoDB 6.0 以降では、changeStreamOptions.preAndPostImages.expireAfterSeconds を使用してコレクションの変更ストリームの事前イメージと事後イメージの時間ベースの保持をコントロールする場合、ダウングレード時にアクティブな setClusterParameter 操作がないことを確認する必要があります。

MongoDB 6.0 Enterprise 以降、監査ログの暗号化を使用している場合、以前のバージョンの MongoDB にダウングレードする前に、構成ファイルから次の設定を削除する必要があります。

既存の暗号化された監査ログは暗号化されたままなので、暗号化されたログの保存と処理のために開発した手順はすべてそのまま使用できます。

監査ログ」を参照してください。

MongoDB 6.0 以降では、変更ストリームにドキュメントの変更前のイメージと変更後のイメージを使用している場合、以前の MongoDB バージョンにダウングレードする前に、collMod コマンドを使用して各コレクションの changeStreamPreAndPostImages を無効にする必要があります。

アプリケーションで変更ストリームを使用する場合は、ダウングレード後に使用できなくなる showExpandedEvents オプションが不要であることを確認してください。

クラスターの構成で、LDAP 構成に新しい"srv:"または"srv_raw:" URL タイプが使用されている場合、ダウングレード後に再起動することはできません。 ダウングレードする前に、クラスターの設定から新しい URL タイプを削除してください。

fCV ダウングレードを完了する前に、暗号化されたフィールドを使用するコレクションを削除する必要があります。encryptedFields を使用しているコレクションがある場合、ダウングレードは完了しません。

アプリケーションで$densifyを使用して、ギャップを埋めたり、欠落値を追加したり、指定された範囲の値をデータに入力するドキュメントを作成する場合は、ダウングレードする前に集計パイプラインから$densifyステージを削除してください。 $densifyステージはバージョン5.1以降でのみ使用できます。

戻る

6.0