

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon DocumentDB の MongoDB との互換性
<a name="compatibility"></a>

Amazon DocumentDB は、MongoDB 4.0、MongoDB 5.0、MongoDB 8.0 などの MongoDB 互換性をサポートしています。 MongoDB MongoDB 互換性とは、現在お使いの MongoDB データベースで使用しているアプリケーション、ドライバ、ツールの大部分を Amazon DocumentDB でもほとんど変更することなく使用できることを意味します。ここでは、Amazon DocumentDB の新機能、利用開始、移行パス、機能的な違いなど、Amazon DocumentDB の MongoDB との互換性について知っておくべきことをすべて説明します。

**Topics**
+ [MongoDB 8.0 の互換性](#mongodb-80)
+ [MongoDB 5.0 との互換性](#mongodb-50)
+ [MongoDB 4.0 の互換](#mongodb-40)

## MongoDB 8.0 の互換性
<a name="mongodb-80"></a>

**Topics**
+ [Amazon DocumentDB 8.0 の新機能](#compatibility-whatsnew-8)
+ [Amazon DocumentDB の使用開始](#compatibility-getstarted-5)
+ [Amazon DocumentDB 5.0 または 8.0 へのアップグレードまたは移行](#compatibility-upgrade-5)
+ [機能的な違い](#compatibility-differences-5)

### Amazon DocumentDB 8.0 の新機能
<a name="compatibility-whatsnew-8"></a>

Amazon DocumentDB 8.0 はクエリパフォーマンスを最大 7 倍向上させ、圧縮率を最大 5 倍向上させ、高性能アプリケーションを低コストで構築できるようにします。Amazon DocumentDB 8.0 は MongoDB 8.0 と完全なワイヤプロトコル互換性があります。以下の概要では、Amazon DocumentDB 8.0 で導入された主な機能をいくつか紹介します。新機能の全リストを見るには、「[リリースノート](release-notes.md)」 を参照してください。
+ MongoDB 8.0 API ドライバーのサポートを追加することで、MongoDB 8.0 との互換性を提供します。MongoDB API バージョン 6.0 および 7.0 を使用して構築されたアプリケーションもサポートしています。
+ Amazon DocumentDB 8.0 の新しいクエリプランナーは、集約パイプラインの最適化と個別のコマンドのサポートに加えて、集約ステージ演算子のパフォーマンスの向上を拡張します。
+ Amazon DocumentDB 8.0 は照合とビューをサポートしています。
+ \$1replaceWith、\$1vectorSearch、\$1merge、\$1set、\$1unset、\$1bucket、3 つの新しい集計演算子 \$1pow、\$1rand、\$1dateTrunc の 6 つの新しい集計ステージを提供します。
+ テキストインデックスの新しいバージョン: Amazon DocumentDB 8.0 のテキストインデックス v2 では、追加のトークンが導入され、テキスト検索機能が強化されています。
+ 並列ベクトルインデックス構築により、Amazon DocumentDB 8.0 はインデックス構築時間を最大 30 倍短縮します。

### Amazon DocumentDB 8.0 の使用を開始する
<a name="compatibility-getstarted-5"></a>

Amazon DocumentDB 8.0 の使用を開始するには、[「使用開始ガイド](https://docs.aws.amazon.com/documentdb/latest/developerguide/get-started-guide.html)」を参照してください。 AWS マネジメントコンソール または AWS SDK AWS CLI、または を使用して、新しい Amazon DocumentDB 8.0 クラスターを作成できます CloudFormation。Amazon DocumentDB に接続する場合、MongoDB 5.0 以降と互換性のある MongoDB ドライバまたはユーティリティを使用する必要があります。

**注記**  
 AWS SDK、 AWS CLI、または を使用する場合 CloudFormation、エンジンバージョンはデフォルトで 5.0.0 になります。新しい Amazon DocumentDB 8.0 クラスターを作成`engineVersion = 8.0.0`したり、新しい Amazon DocumentDB 4.0 クラスター`engineVersion = 4.0.0`を作成したり、新しい Amazon DocumentDB 3.6 クラスターを作成`engineVersion = 3.6.0`したりするには、 パラメータを明示的に指定する必要があります。特定の Amazon DocumentDB クラスターについては、 AWS CLI を使用してクラスターのバージョンを確認する`describe-db-clusters`か、Amazon DocumentDB マネジメントコンソールを使用して特定のクラスターのエンジンバージョン番号を表示できます。

Amazon DocumentDB 5.0 および 8.0 は、Amazon EC2 `r8g` Graviton4 プロセッサと、クラスターの `r6g`および `t4.medium`インスタンスタイプなどの Graviton2 プロセッサをサポートし、サポートされているすべてのリージョンで使用できます (「」を参照[インスタンス](what-is.md#what-is-db-instances))。料金の詳細については、「[Amazon DocumentDB (MongoDB 互換) の料金](https://aws.amazon.com/documentdb/pricing/)」 を参照してください。

### Amazon DocumentDB 5.0 または 8.0 へのアップグレードまたは移行
<a name="compatibility-upgrade-5"></a>

、、、 などの[AWS DMS](https://aws.amazon.com/dms/)ユーティリティを使用して、MongoDB 3.6 または MongoDB 4.0 から Amazon DocumentDB 5.0 または Amazon DocumentDB 8.0 に移行できます。 [https://docs.aws.amazon.com/documentdb/latest/developerguide/backup_restore-dump_restore_import_export_data.html](https://docs.aws.amazon.com/documentdb/latest/developerguide/backup_restore-dump_restore_import_export_data.html)移行の手順については、「[を使用した Amazon DocumentDB クラスターのアップグレード AWS Database Migration Service](docdb-migration.versions.md)」 を参照してください。

### 機能的な違い
<a name="compatibility-differences-5"></a>

#### Amazon DocumentDB 5.0 と 8.0 の機能的な違い
<a name="w2aac11b9c11b3"></a>

Amazon DocumentDB 8.0 のリリースでは、Amazon DocumentDB 5.0 と Amazon DocumentDB 8.0 の機能的な違いがあります。
+  プランナー v1 は Amazon DocumentDB 5.0 のデフォルトのクエリプランナーですが、パフォーマンスの高いプランナー v3 は Amazon DocumentDB 8.0 のデフォルトです。
+  Amazon DocumentDB 8.0 のビュー、照合、\$1merge などの演算子などの新機能は、Planner v3 とのみ互換性があります。
+  Amazon DocumentDB 8.0 では、圧縮はデフォルトでオンになっており、Zstandard アルゴリズムを使用するように設定されています。さらに、Amazon DocumentDB 8.0 では、「enabled」が有効な選択肢ではなくなりました。Zstd、LZ4、なしから選択できます。
+  サーバーレスは現在、Amazon DocumentDB 8.0 では使用できません。

## MongoDB 5.0 との互換性
<a name="mongodb-50"></a>

**Topics**
+ [Amazon DocumentDB 5.0 の新機能](#compatibility-whatsnew-5)
+ [Amazon DocumentDB 5.0 の使用開始](#compatibility-getstarted-5)
+ [Amazon DocumentDB 5.0 へのアップグレードまたは移行](#compatibility-upgrade-5)
+ [機能的な違い](#compatibility-differences-5)

### Amazon DocumentDB 5.0 の新機能
<a name="compatibility-whatsnew-5"></a>

Amazon DocumentDB 5.0 では、ストレージ制限やクライアント側のフィールドレベルの暗号化など、新機能が導入されています。Amazon DocumentDB 5.0 で導入された主要な機能をいくつか紹介します。新機能の全リストを見るには、「[リリースノート](release-notes.md)」 を参照してください。
+ すべてのインスタンスベースの Amazon DocumentDB クラスターとシャードベースのエラスティッククラスターのストレージ制限を 128 TiB に増大。
+ Amazon DocumentDB 5.0 (エンジンバージョン 3.0.775) の導入
  + MongoDB 5.0 API ドライバーのサポート
  + クライアント側のフィールドレベル暗号化 (FLE) のサポート。Amazon DocumentDB クラスターにデータを書き込む前に、クライアント側でフィールドを暗号化できるようになりました。詳細については、「[クライアント側のフィールドレベル暗号化](https://docs.aws.amazon.com/documentdb/latest/developerguide/field-level-encryption.html)」を参照してください。
  + 新しい集約演算子: `$dateAdd`、`$dateSubtract`
  + `$elemMatch` 演算子付きのインデックスをサポートします。その結果、`$elemMatch` を持つクエリではインデックススキャンが行われます。

Amazon DocumentDB は、すべての MongoDB 5.0 機能をサポートしているわけではありません。Amazon DocumentDB 5.0 を構築する際、お客様から最も多く構築するよう求められた特徴と機能から逆算していきました。今後もお客様の要望をもとに、MongoDB 5.0 の機能を追加していく予定です。サポートされている API の最新リストについては、「[Amazon DocumentDB でサポートされている MongoDB API、オペレーション、およびデータ型](mongo-apis.md)」 を参照してください。

### Amazon DocumentDB 5.0 の使用開始
<a name="compatibility-getstarted-5"></a>

Amazon DocumentDB 5.0 の使用を開始するには、[入門ガイド](https://docs.aws.amazon.com/documentdb/latest/developerguide/get-started-guide.html) を参照してください。 AWS マネジメントコンソール または AWS SDK AWS CLI、または を使用して、新しい Amazon DocumentDB 5.0 クラスターを作成できます CloudFormation。Amazon DocumentDB に接続する場合、MongoDB 5.0 以降と互換性のある MongoDB ドライバまたはユーティリティを使用する必要があります。

**注記**  
 AWS SDK、 AWS CLI、または を使用する場合 CloudFormation、エンジンバージョンはデフォルトで 5.0.0 になります。Amazon DocumentDB 4.0 クラスターを新規に作成する場合はパラメータ `engineVersion = 4.0.0` を、あるいは Amazon DocumentDB 3.6 クラスターを新規に作成する場合は`engineVersion = 3.6.0` を明示的に指定する必要があります。特定の Amazon DocumentDB クラスターについては、 AWS CLI を使用してクラスターのバージョンを確認する`describe-db-clusters`か、Amazon DocumentDB マネジメントコンソールを使用して特定のクラスターのエンジンバージョン番号を表示できます。

Amazon DocumentDB 5.0 および 8.0 は、Amazon EC2 `r8g` Graviton4 プロセッサと、クラスターの `r6g`および `t4.medium`インスタンスタイプなどの Graviton2 プロセッサをサポートし、サポートされているすべてのリージョンで使用できます (「」を参照[インスタンス](what-is.md#what-is-db-instances))。料金の詳細については、「[Amazon DocumentDB (MongoDB 互換) の料金](https://aws.amazon.com/documentdb/pricing/)」 を参照してください。

### Amazon DocumentDB 5.0 へのアップグレードまたは移行
<a name="compatibility-upgrade-5"></a>

MongoDB 3.6 または MongoDB 4.0 から Amazon DocumentDB 5.0 への移行は、[AWS DMS](https://aws.amazon.com/dms/) または [`mongodump`、`mongorestore`、`mongoimport` および `mongoexport`](https://docs.aws.amazon.com/documentdb/latest/developerguide/backup_restore-dump_restore_import_export_data.html) のようなユーティリティを利用して行うことができます。移行の手順については、「[を使用した Amazon DocumentDB クラスターのアップグレード AWS Database Migration Service](docdb-migration.versions.md)」 を参照してください。

### 機能的な違い
<a name="compatibility-differences-5"></a>

#### Amazon DocumentDB 4.0 と 5.0 の機能的な違い
<a name="w2aac11c13c11b3"></a>

Amazon DocumentDB 5.0 のリリースに伴い、Amazon DocumentDB 4.0 と Amazon DocumentDB 5.0 には機能上の違いがあります。
+ バックアップビルトインロールが `serverStatus` をサポートするようになりました。アクション - バックアップロールを持つデベロッパーおよびアプリケーションは、Amazon DocumentDB クラスターの状態に関する統計を収集できます。
+ `replSetGetConfig` 出力では `SecondaryDelaySecs` フィールドが `slaveDelay` を置き換えます。
+ **hello** コマンドは `isMaster` を置き換えます - **hello** は Amazon DocumentDB クラスターの役割を説明するドキュメントを返します。
+ Amazon DocumentDB 5.0 では、最初のネストレベルで `$elemMatch` 演算子によるインデックススキャンをサポートするようになりました。インデックススキャンは、クエリのみのフィルタに 1 つのレベルの `$elemMatch` フィルタがある場合はサポートされますが、ネストされた `$elemMatch` クエリが含まれる場合はサポートされません。

  たとえば、Amazon DocumentDB 5.0 では、ネストされたレベルに `$elemMatch` 演算子を含めても、Amazon DocumentDB 4.0 のように値を返しません。

  ```
  db.foo.insert(
  [
      {a: {b: 5}},
      {a: {b: [5]}},
      {a: {b: [3, 7]}},
      {a: [{b: 5}]},
      {a: [{b: 3}, {b: 7}]},
      {a: [{b: [5]}]},
      {a: [{b: [3, 7]}]},
      {a: [[{b: 5}]]},
      {a: [[{b: 3}, {b: 7}]]},
      {a: [[{b: [5]}]]},
      {a: [[{b: [3, 7]}]]}
  ]);
  
  // DocumentDB 5.0
  > db.foo.find({a: {$elemMatch: {b: {$elemMatch: {$lt: 6, $gt: 4}}}}}, {_id: 0})
  { "a" : [ { "b" : [ 5 ] } ] }
  
  // DocumentDB 4.0
  > db.foo.find({a: {$elemMatch: {b: {$elemMatch: {$lt: 6, $gt: 4}}}}}, {_id: 0})
  { "a" : [ { "b" : [ 5 ] } ] }
  { "a" : [ [ { "b" : [ 5 ] } ] ] }
  ```
+ Amazon DocumentDB 4.0 では、「\$1」プロジェクションはすべてのドキュメントとすべてのフィールドを返します。Amazon DocumentDB 5.0 では、「\$1」プロジェクションを使用する **find** コマンドは、「\$1」プロジェクションと一致したフィールドのみを含むクエリパラメータに一致するドキュメントを返します。
+ Amazon DocumentDB 5.0 では、`$regex` および `$options` クエリパラメータを指定した **find** コマンドは、「`$regex` と `$options` の両方にオプションを設定することはできません」というエラーを返します。
+ Amazon DocumentDB 5.0 では、以下の場合に `$indexOfCP` は「-1」を返します。
  + 文字列式内に部分文字列がない場合、または
  + 開始値が終了値より大きい場合、または
  + 開始値がは文字列のバイト長より大きい場合。
+ Amazon DocumentDB 4.0 では、開始位置が文字列の終了またはバイト長よりも大きい数値の場合、`$indexOfCP` は「0」を返します。
+ Amazon DocumentDB 5.0 では、たとえば `{"_id.nestedField" : 1}` のような `_id fields` の射影演算は、投影されたフィールドのみを含むドキュメントが返されます。これに対し、Amazon DocumentDB 4.0 の場合、入れ子にされたフィールドプロジェクトコマンドではどのドキュメントも除外しません。

## MongoDB 4.0 の互換
<a name="mongodb-40"></a>

**Topics**
+ [Amazon DocumentDB 4.0 機能](#compatibility-whatsnew)
+ [Amazon DocumentDB 4.0 の使用開始](#compatibility-getstarted)
+ [Amazon DocumentDB 4.0 へのアップグレードまたは移行](#compatibility-upgrade)
+ [機能的な違い](#compatibility-differences)

### Amazon DocumentDB 4.0 機能
<a name="compatibility-whatsnew"></a>

Amazon DocumentDB 4.0 では、ACID トランザクションや変更ストリームの改良など、多くの新機能が導入されました。Amazon DocumentDB 4.0 で導入された主要な機能をいくつかを以下に要約します。機能の全リストを見るには、「[リリースノート](release-notes.md)」 を参照してください。
+ **ACID トランザクション**: Amazon DocumentDB は、複数のドキュメント、ステートメント、コレクション、およびデータベース間でトランザクションを実行する機能をサポートするようになりました。トランザクションは、Amazon DocumentDB クラスター内の 1 つまたは複数のドキュメントに対し、アトミックで一貫性、分離、耐久性（ACID）のあるオペレーションを実行できるようにすることで、アプリケーション開発を簡素化します。詳細については、[Amazon DocumentDB でのトランザクション](transactions.md) を参照してください。
+ **変更ストリーム**: これで、クラスターレベル (`client.watch()` または `mongo.watch()`) とデータベース (`db.watch()`) で変更ストリームを開くことができるようになりました 。`startAtOperationTime` をクリックして変更ストリームカーソルを開き、最後に、変更ストリームの保持期間を 7 日 (以前は 24 時間) に延長できます。詳細については、「[Amazon DocumentDB を用いた変更ストリームの使用](change_streams.md)」を参照してください。
+ **AWS Database Migration Service** (AWS DMS): AWS DMS を使用して MongoDB 4.0 ワークロードを Amazon DocumentDB に移行できるようになりました。Amazon DocumentDB 3.6 と 4.0 の間のアップグレードを実行するために、MongoDB Amazon DocumentDB 4.0 ターゲット、Amazon DocumentDB 3.6 ソースがサポートされ AWS DMS るようになりました。詳細については、[AWS DMS ドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) を参照してください。
+ **パフォーマンスとインデックス作成**: `$lookup` で、インデックスを使用できるようになり、1 フィールドまたは 1 フィールドと `_id` フィールドを含む投影による検索クエリは、インデックスから直接提供でき、コレクション（カバークエリ）から読み取る必要がなくなり、`hint()` と `findAndModify` をする機能、`$addToSet` のパフォーマンスの最適化、および全体的なインデックスサイズを小さくするための改良が行われました。詳細については、「[リリースノート](release-notes.md)」を参照してください。
+ **演算子**: Amazon DocumentDB 4.0 では、いくつかの新しい集計演算子がサポートされるようになりました: `$ifNull`、`$replaceRoot`、`$setIsSubset`、`$setIntersection`、`$setUnion`、`$setEquals`。[Amazon DocumentDB でサポートされている MongoDB API、オペレーション、およびデータ型](mongo-apis.md) でサポートされるすべての MongoDB API、オペレーション、およびデータタイプを確認できます。
+ **ロールベースのアクセスコントロール**(RBAC): `ListCollection` と `ListDatabase` の両方のコマンドで、オプションとして `authorizedCollections` と `authorizedDatabases` パラメータを使用することができるようになり、ユーザーが `listCollections` と `listDatabase` ロールを必要とすることなくアクセス許可を持つコレクションとデータベースを一覧表示できるようになりました。また、`KillCursor` ロールを必要とすることなく自分のカーソルを強制終了させる機能もあります。

Amazon DocumentDB は、すべての MongoDB 4.0 機能をサポートしているわけではありません。Amazon DocumentDB 4.0 を構築する際、お客様から最も多く構築するよう求められた特徴と機能から逆算していきました。今後もお客様の要望をもとに、MongoDB 4.0 の機能を追加していく予定です。例えば、Amazon DocumentDB 4.0 では、現在、MongoDB 4.0 で導入されていた型変換演算子または文字列演算子をサポートしていません。サポートされている API の最新リストについては、[Amazon DocumentDB でサポートされている MongoDB API、オペレーション、およびデータ型](mongo-apis.md) を参照してください。

### Amazon DocumentDB 4.0 の使用開始
<a name="compatibility-getstarted"></a>

Amazon DocumentDB 4.0 の使用を開始するには、[入門ガイド](https://docs.aws.amazon.com/documentdb/latest/developerguide/get-started-guide.html) を参照してください。 AWS マネジメントコンソール または AWS SDK AWS CLI、または を使用して、新しい Amazon DocumentDB 4.0 クラスターを作成できます CloudFormation。Amazon DocumentDB に接続する場合、MongoDB 4.0 以降と互換性のある MongoDB ドライバまたはユーティリティを使用する必要があります。

**注記**  
 AWS SDK、 AWS CLI、または を使用する場合 CloudFormation、エンジンバージョンはデフォルトで 5.0.0 になります。Amazon DocumentDB 4.0 クラスターを新規に作成する場合はパラメータ `engineVersion = 4.0.0` を、あるいは Amazon DocumentDB 3.6 クラスターを新規に作成する場合は`engineVersion = 3.6.0` を明示的に指定する必要があります。特定の Amazon DocumentDB クラスターについては、 AWS CLI を使用してクラスターのバージョンを確認する`describe-db-clusters`か、Amazon DocumentDB マネジメントコンソールを使用して特定のクラスターのエンジンバージョン番号を表示できます。

Amazon DocumentDB 4.0 は `r5`、`r6g`、`t3.medium` および、クラスターの `t4g.medium` インスタンスタイプをサポートし、サポートされているすべてのリージョンで利用できます。Amazon DocumentDB 4.0 を使用しても追加コストは発生しません。料金の詳細については、[Amazon DocumentDB (MongoDB 互換) の料金](https://aws.amazon.com/documentdb/pricing/) を参照してください。

### Amazon DocumentDB 4.0 へのアップグレードまたは移行
<a name="compatibility-upgrade"></a>

MongoDB 3.6 または MongoDB 4.0 から Amazon DocumentDB 4.0 への移行は、[AWS DMS](https://aws.amazon.com/dms/) または [`mongodump`、`mongorestore`、`mongoimport` および `mongoexport`](https://docs.aws.amazon.com/documentdb/latest/developerguide/backup_restore-dump_restore_import_export_data.html) のようなユーティリティを利用して行うことができます。同様に、同じツールを使用して Amazon DocumentDB 3.6 から Amazon DocumentDB 4.0 にアップグレードできます。移行の手順については、[を使用した Amazon DocumentDB クラスターのアップグレード AWS Database Migration Service](docdb-migration.versions.md) を参照してください。

### 機能的な違い
<a name="compatibility-differences"></a>

#### Amazon DocumentDB 3.6 と 4.0 の機能的な違い
<a name="w2aac11c15c11b3"></a>

Amazon DocumentDB 4.0のリリースに伴い、Amazon DocumentDB 3.6と Amazon DocumentDB 4.0には機能上の違いがあります。
+ **ネストドキュメントの投影**: Amazon DocumentDB 3.6 は、投影法を適用するときに、ネストドキュメントの最初のフィールドを考慮します。ただし、Amazon DocumentDB 4.0 はサブドキュメントを解析し、各サブドキュメントにも投影法を適用します。たとえば、投影が `"a.b.c": 1` の場合、両方のバージョンでの動作は同じです。ただし、投影が `{a:{b:{c:1}}}` だとすると、Amazon DocumentDB 3.6 は投影を 'a' にのみ適用し、'b' や 'c' には適用しません。
+ **`minKey` と `maxKey` 動作**: Amazon DocumentDB 4.0 では、`{x:{$gt:MaxKey}}` では何も返しませんが、`{x:{$lt:MaxKey}}` ではすべてを返します。
+ **ドキュメント比較の相違**: サブドキュメント内 (例: `b` の `{"_id" :1, "a" :{"b":1}}`)の 異なるタイプ (double、int、long) の数値比較では、数値データ型とドキュメントの各レベルにわたって一貫した出力が提供されるようになりました。

#### Amazon DocumentDB 4.0 と MongoDB 4.0 の機能的な違い
<a name="w2aac11c15c11b5"></a>

以下は、Amazon DocumentDB 4.0 と MongoDB 4.0 の機能的な違いです。
+ **パスに空のキーがある場合のルックアップ**: コレクションに、配列内 (例: `{"x" : [ { "" : 10 }, { "b" : 20 } ]}`) に空のキーを持つドキュメントが含まれている場合、そしてクエリで使用されるキーが空の文字列 (例: `x.`) で終わる場合は、Amazon DocumentDB は配列内のすべてのドキュメントを走査するのでそのドキュメントを返しますが、一方 MongoDB はそのドキュメントを返しません。
+ **パスの`$setOnInsert` に沿った `$`**: フィールド演算子 `$setOnInsert` は Amazon DocumentDBのパスの `$` との組み合わせでは動作しませんが、これは MongoDB 4.0 と同じです。