このページでは、MongoDB 7.0 で導入された、古いバージョンの MongoDB との互換性に影響を与える可能性のある変更について説明します。
MongoDB 7.0 はメジャー リリースであるため、MongoDB Atlas とオンプレミスの配置の両方でサポートされます。 MongoDB 7.0 には、MongoDB Rapid Release 6.1、6.2、および 6.3 で導入された変更が含まれています。 このページでは、これらの Rapid Release と MongoDB 7.0 で導入された互換性の変更について説明します。
メジャー リリースと Rapid Release の違いの詳細については、「 MongoDB のバージョン管理 」を参照してください。
MongoDB 7.0 からのダウングレードの詳細については、「 7.0 から 6.0 へのダウングレード 」を参照してください。
非推奨
非推奨 | 説明 |
|---|---|
| バージョン 7.0 で非推奨になりました。 |
7.0 のLinuxのみで非推奨になりました。 |
無料モニタリングの廃止
MongoDB 7.0 以降、無料モニタリングは廃止予定です。 次の場合は使用できません。
cloud.monitoring.free構成オプション--enableFreeMonitoringserver parameterdb.enableFreeMonitoring()コマンドdb.disableFreeMonitoring()コマンドsetFreeMonitoringコマンド
Queryable Encryption の一般的なアベイラビリティー
MongoDB 7.0 以降、等価クエリを使用した Queryable Encryption が一般提供(GA)されます。GA 版での改善により、Queryable Encryption はパブリック プレビュー版との互換性がなくなっています。Queryable Encryption は現在 GA 版が提供されているため、パブリックプレビュー版は使用しないでください。
パブリック プレビューと GA の間のサーバーとドライバーの互換性
等価クエリで Queryable Encryption を使用するには、MongoDB サーバーはバージョン 7.0 以降で、ドライバーは 7.0 と互換性がある必要があります。 MongoDB 6.x に含まれる Queryable Encryption Public Preview を引き続き使用する場合は、サーバーはバージョン 6.x のままである必要があり、ドライバーは 6.x と互換性がある必要があります。 7.0 サーバーでは MongoDB 6.x 互換ドライバー、または 6.x サーバーでは 7.0 互換ドライバーは使用できません。 そのような操作を試みるとエラーが発生します。
アップグレードを容易にするために、MongoDB 7.0 ドライバーは MongoDB 6.x ドライバーで作成されたデータを復号化できます。 アップグレード オプションについては、次のセクションを参照してください。
新しい開始(推奨)
可能であれば、MongoDB 6.x の Queryable Encryption Public Preview で生成されたコレクションを移行するのではなく、新しいコレクションを作成します。
MongoDB サーバーとドライバーを 7.0 にアップグレードします。
前のコレクションとは異なる名前で新しい暗号化されたコレクションを設定します。
新しいデータを挿入するか、ローカル コピーがある場合は既存のデータの暗号化されていないバージョンを挿入します。
以前のバージョン 6.x コレクションを削除します。
移行
新しいデータを使用できない場合、または既存のデータの暗号化されていないバージョンがない場合。
MongoDB サーバーとドライバーを 7.0 にアップグレード
7.0 互換ドライバーを使用して、暗号化されたコレクションをクエリして復号化します。
出力をローカルに保存します。
新しい暗号化されたコレクションを構成し、データを取り込みます。
警告
mongoexportおよびmongodump操作ではコレクションは復号化されません。 復号化されたデータを出力するには、ドライバーからコレクションをクエリする必要があります。MongoDB 7.0 互換ドライバーは、MongoDB 6.x 互換ドライバーで暗号化されたデータの暗号化されたフィールドをクエリできません。 データを復号化するには、暗号化されていないフィールドをクエリするか、コレクション全体をクエリします。
下位互換性のない機能
次の 7.0 の機能は、MongoDB の以前のバージョンと互換性がありません。 MongoDB 7.0 から以前のバージョンにダウングレードするには、次の機能のいずれかを使用するデータを削除する必要があります。
範囲インデックスを持つ
encryptedFieldsによるコレクション複合ワイルドカード インデックスには FCV 7.0 以上が必要です。 7.0
mongod1 つ以上の複合ワイルドカード インデックスを使用している場合、 は起動しません。changeStreamPreAndPostImagesが有効になっているコレクションを持つコンフィギュレーションサーバー時系列コレクション の 部分フィルター を持つセカンダリ TTL インデックス
カスタム バケット パラメーターを持つ時系列コレクション
ノード内認証
MongoDB 7.0 以降では、属性または拡張値によって識別されるクラスター ノードとして X.509 証明書を認証するようにサーバーを構成できます。 この構成を上書きして、ローリング アップグレード中に代替の証明書を受け入れることもできます。
MongoDB 6.0 にダウングレードするには、証明書ローテーション手順を実行してnet.tls.clusterAuthX509設定を解除し、クラスター メンバーシップ証明書をDC、O、OU 属性が一致するものにローテーションします。
これが完了したら、クラスターをダウングレードできます。
時系列
時系列コレクションから部分的な TTL インデックスを排除します。
新しいインデックス パラメーターを使用してコレクションを削除または変更します。 場合によっては、ダウングレードする前にコレクションを削除する必要がない場合は、
collModを使用してレガシー粒度設定に切り替えることができます。
クラスター構成
アクティブなsetClusterParameter パラメーター操作により、機能の互換性バージョン(FCV)が正常に完了するのを妨げます。
暗号化マルチマップ(EMM)
ダウングレードする前に、 encryptedFieldsコレクション オプションを使用するコレクションを削除してください。
ワイルドカード インデックス
複合ワイルドカード インデックスには FCV 7.0 以上が必要です。 7.0mongod1 つ以上の複合ワイルドカード インデックスを使用している場合、 は起動しません。
OIDC アクセス トークン認証の動作
MongoDB 7.0 以降では、OIDC アクセス トークンに指定できるオーディエンスの oidcIdentityProvidersフィールドは1 つだけです。空の配列または複数の文字列の配列を持つオーディエンス フィールドは無効です。
詳細については、「 oidcIdentityProviders フィールド 」を参照してください。
$natural パラメーターを許容値
MongoDB7.0 $natural0より前では、 は 、NaN 、"X"、 などの誤った型値を受け入れます。-0.01 MongoDB7.0 以降で、1 と 以外の値を-1 $naturalに渡すと、 MongoDB はエラーを返します。
MongoDB 6.3 に導入された変更
粒度設定
MongoDB6.3 以降では、新しいbucketMaxSpanSeconds と カスタム バケットbucketRoundingSeconds パラメータを使用して時系列バケットの粒度を構成できます。6.3 を下回るには、これらのパラメーターを持つすべてのコレクションを削除するか、対応するgranularity を使用するようにコレクションを変更する必要があります。詳細については、collMod を参照してください。
すべての bucketMaxSpanSeconds と bucketRoundingSeconds の値が granularity 値に対応しているわけではありません。このような場合は、コレクションを 削除する必要があります。
時系列コレクションの部分的な TTL インデックス
MongoDB6.3 以降では、時系列コレクションで部分的な TTL(Time To Live)インデックスを作成できます。 6.3を下回るには、時系列コレクションからすべての部分的な TTL インデックスを削除する必要があります。
MongoDB 6.2 に導入された変更
config.settings スキーマ検証
MongoDB6.2 value11024以降では、_id: chunksize config.settingsコレクションに フィールドを持つドキュメントを挿入または更新するときに、 から (この値を含む)の間で を設定する必要があります。無効なvalue を指定すると、 MongoDB はスキーマ検証エラーを返します。
MongoDB 6.2 より前に設定された 1 から 1024 MB(この値を含む)の範囲外の value フィールドは変更されません。
削除されたオプション
バージョン 6.2 以降では、MongoDB は addShard コマンドから maxSize フィールドを削除します。以下はその結果です。
MongoDB 6.1 に導入された変更
$add 浮動小数点丸めエラー
MongoDB6.1 以降、 式が複数の浮動点値を含む入力リストを受け取る場合、 MongoDB$add は以前のバージョンと比較して若干異なる結果を返す場合があります。
$add式は浮動小数点の丸めエラーを考慮しなくなりました。その結果、$add はほとんどのプログラミング言語で を追加するように動作します。
例、次の $add式は、 MongoDB 6.1 で実行すると古いバージョンと比較して異なる結果を返します。
db.test.aggregate( [ { $project: { sumOfValues: { $add: [ 0.1, 0.2, 0.3 ] } } } ] )
MongoDB 6.1 以降の 出力は次のようになります。
[ { _id: ObjectId("6390f8085425651d8d0ef0a7"), sumOfValues: 0.6000000000000001 } ]
MongoDB 6.0 以前の出力は次のとおりです。
[ { _id: ObjectId("6390f8085425651d8d0ef0a7"), sumOfValues: 0.6 } ]
自動チャンク分割なし
MongoDB 6.0.3以降、 自動チャンク分割は実行されません。 これはバランシング ポリシーの改善によるものです。 自動分割コマンドは引き続き存在しますが、操作は実行されません。
MongoDB 6.1以降では、次の自動分割コマンドでは操作が実行されません。
削除されたオプション
MongoDB 6.1 以降では、ジャーナリングは常に有効になっています。その結果、MongoDB は storage.journal.enabled オプションと、それに対応するコマンドライン オプションの --journal および --nojournal を削除します。
MongoDB6.1 以降、SNMP は削除されています。関連するすべてのコマンドラインオプションは、 の起動を妨げます。配置を監視するには、mongod MongoDB Ops Managerを使用します。
サーバー パラメータ
MongoDB6.1 coordinateCommitReturnImmediatelyAfterPersistingDecisionfalse以降、 のデフォルト値は です。
シャーディング メトリクスの変更
currentOp.opStatus は、 MongoDB 6.1 のリシャーディング メトリクスから削除されました。
バケットコレクションの名前空間では許可されていないビュー
時系列バケットコレクションの名前空間(つまり、system.buckets というプレフィックスが付いたコレクション)からビューを作成することはできません。
MongoDB 6.1 に以前のバージョンからアップグレードする場合は、system.buckets コレクションで作成されているビューをすべて削除する必要があります。