

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 MongoDB 做為 的來源 AWS DMS
<a name="CHAP_Source.MongoDB"></a>

 如需 AWS DMS 支援做為來源的 MongoDB 版本資訊，請參閱 [的來源 AWS DMS](CHAP_Introduction.Sources.md)。

請注意下列與 MongoDB 版本支援有關的事項：
+  AWS DMS 3.4.5 版和更新版本支援 MongoDB 4.2 版和 4.4 版。
+  AWS DMS 3.4.5 和更新版本以及 MongoDB 4.2 和更新版本支援分散式交易。如需 MongoDB 分散式交易的詳細資訊，請參閱 [MongoDB 文件](https://www.mongodb.com/docs/)中的[交易](https://docs.mongodb.com/manual/core/transactions/)。
+  AWS DMS 3.5.0 及更新版本不支援 3.6 之前的 MongoDB 版本。
+  AWS DMS 3.5.1 版和更新版本支援 MongoDB 5.0 版。
+  AWS DMS 3.5.2 版和更新版本支援 MongoDB 6.0 版。
+  AWS DMS 3.5.4 版和更新版本支援 MongoDB 7.0 版和 8.0 版。



如果您不熟悉 MongoDB，請注意以下重要的 MongoDB 資料庫概念：
+ MongoDB 中的記錄是一份*文件*，是由欄位/值對組成的資料結構。欄位值可以包含其他文件、陣列和文件的陣列。文件約相當於關聯式資料庫資料表中的資料列。
+ MongoDB 的*集合*是一組文件，約相當於關聯式資料庫資料表。
+ MongoDB 的*資料庫*是一組集合，大致相當於關聯式資料庫中的結構描述。
+ MongoDB 文件在內部以壓縮格式儲存為二進位 JSON (BSON) 檔案，此格式包含文件中每個欄位的類型。每份文件都有唯一的 ID。

AWS DMS 使用 MongoDB 做為來源、*文件模式*或*資料表模式時， 支援兩種遷移模式*。您可以指定建立 MongoDB 端點時要使用的遷移模式，或從 AWS DMS 主控台設定**中繼資料模式**參數。或者，您可以在端點組態面板中選取 **\$1id as a separate column** 核取記號按鈕，以建立第二個名為 `_id` 的資料欄，作為主索引鍵。

遷移模式的選擇會影響目標資料的結果格式，請見下文說明。

**文件模型**  
在文件模式中，MongoDB 文件是依原狀遷移，這表示文件資料合併成目標資料表中的單一資料行，名為 `_doc`。當您使用 MongoDB 做為來源端點時，文件模式是預設設定。  
例如，請考慮 MongoDB 集合中稱為 myCollection 的下列文件。  

```
 db.myCollection.find()
{ "_id" : ObjectId("5a94815f40bd44d1b02bdfe0"), "a" : 1, "b" : 2, "c" : 3 }
{ "_id" : ObjectId("5a94815f40bd44d1b02bdfe1"), "a" : 4, "b" : 5, "c" : 6 }
```
使用文件模式將資料遷移到關聯式資料庫資料表之後，資料結構如下所示。MongoDB 文件中的資料欄位會合併到` _doc` 資料行。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/dms/latest/userguide/CHAP_Source.MongoDB.html)
您可以選擇性地將額外連線屬性 `extractDocID` 設為 *true*，建立第二個資料行，命名為 `"_id"`，作用如同主索引鍵。如果您要使用 CDC，請將此參數設為 *true*。  
搭配產生[多文件交易](https://www.mongodb.com/docs/manual/reference/method/Session.startTransaction/#mongodb-method-Session.startTransaction)的來源使用 CDC 時， `ExtractDocId` 參數**必須**設定為 *true*。如果未啟用此參數， AWS DMS 任務會在遇到多文件交易時失敗。  
在文件模式中， AWS DMS 會管理集合的建立和重新命名，如下所示：  
+ 如果您將新的集合新增至來源資料庫， AWS DMS 會為集合建立新的目標資料表，並複寫任何文件。
+ 如果您重新命名來源資料庫的現有集合， AWS DMS 不會重新命名目標資料表。
如果目標端點是 Amazon DocumentDB，請以**文件模式**執行遷移。

**資料表模式**  
在資料表模式中， 會將 MongoDB 文件中的每個最上層欄位 AWS DMS 轉換為目標資料表中的資料欄。如果欄位為巢狀，請將巢狀值 AWS DMS 扁平化為單一資料欄。 AWS DMS 然後將索引鍵欄位和資料類型新增至目標資料表的資料欄集。  
對於每個 MongoDB 文件， 會將每個索引鍵和類型 AWS DMS 新增至目標資料表的資料欄集。例如，使用資料表模式， 會將先前的範例 AWS DMS 遷移至下表。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/dms/latest/userguide/CHAP_Source.MongoDB.html)
巢狀值會扁平化到包含以點分隔之索引鍵名稱的資料行。資料行名為以句號分隔的扁平化欄位名稱串連。例如，將具有巢狀值 等欄位的 JSON 文件 AWS DMS 遷移`{"a" : {"b" : {"c": 1}}}`至名為 `a.b.c.`  
若要建立目標資料欄， AWS DMS 會掃描指定數量的 MongoDB 文件，並建立一組所有欄位及其類型。 AWS DMS 然後使用此集來建立目標資料表的資料欄。如果您使用主控台建立或修改 MongoDB 來源端點，您可以指定要掃描的文件數量。預設值為 1000 份文件。如果您使用 AWS CLI，則可以使用額外的連線屬性 `docsToInvestigate`。  
在資料表模式中， 會像這樣 AWS DMS 管理文件和集合：  
+ 當您將文件新增至現有的集合時，會複寫文件。如果欄位不存在於目標中，則不複寫這些欄位。
+ 當您更新文件時，會複寫更新的文件。如果欄位不存在於目標中，則不複寫這些欄位。
+ 完全支援刪除文件。
+ CDC 任務完成時，新增新的集合不會在目標上產生新的資料表。
+ 在變更資料擷取 (CDC) 階段中， AWS DMS 不支援重新命名集合。

**Topics**
+ [使用 MongoDB 做為 來源時所需的許可 AWS DMS](#CHAP_Source.MongoDB.PrerequisitesCDC)
+ [為 CDC 設定 MongoDB 複本集](#CHAP_Source.MongoDB.PrerequisitesCDC.ReplicaSet)
+ [使用 MongoDB 做為 來源時的安全需求 AWS DMS](#CHAP_Source.MongoDB.Security)
+ [將 MongoDB 集合分段並平行遷移](#CHAP_Source.MongoDB.ParallelLoad)
+ [使用 MongoDB 做為 來源時遷移多個資料庫 AWS DMS](#CHAP_Source.MongoDB.Multidatabase)
+ [使用 MongoDB 做為 來源的限制 AWS DMS](#CHAP_Source.MongoDB.Limitations)
+ [使用 MongoDB 做為 來源時的端點組態設定 AWS DMS](#CHAP_Source.MongoDB.Configuration)
+ [MongoDB 的來源資料類型](#CHAP_Source.MongoDB.DataTypes)

## 使用 MongoDB 做為 來源時所需的許可 AWS DMS
<a name="CHAP_Source.MongoDB.PrerequisitesCDC"></a>

對於使用 MongoDB 來源的 AWS DMS 遷移，您可以建立具有根權限的使用者帳戶，或僅在資料庫上具有遷移許可的 使用者。

以下程式碼建立的使用者會成為根帳戶。

```
use admin
db.createUser(
  {
    user: "root",
    pwd: "password",
    roles: [ { role: "root", db: "admin" } ]
  }
)
```

對於 MongoDB 3.x 來源，以下程式碼會在要遷移的資料庫上建立具有最基本權限的使用者。

```
use database_to_migrate
db.createUser( 
{ 
    user: "dms-user",
    pwd: "password",
    roles: [ { role: "read", db: "local" }, "read"] 
})
```

對於 MongoDB 4.x 來源，下面的程式碼會建立具有最基本權限的使用者。

```
{ resource: { db: "", collection: "" }, actions: [ "find", "changeStream" ] }
```

例如，在「admin」資料庫中建立下列角色。

```
use admin
db.createRole(
{
role: "changestreamrole",
privileges: [
{ resource: { db: "", collection: "" }, actions: [ "find","changeStream" ] }
],
roles: []
}
)
```

建立角色後，在要遷移的資料庫中建立使用者。

```
 use test
> db.createUser( 
{ 
user: "dms-user12345",
pwd: "password",
roles: [ { role: "changestreamrole", db: "admin" }, "read"] 
})
```

## 為 CDC 設定 MongoDB 複本集
<a name="CHAP_Source.MongoDB.PrerequisitesCDC.ReplicaSet"></a>

若要搭配 MongoDB 使用持續複寫或 CDC， AWS DMS 需要存取 MongoDB 操作日誌 (oplog)。若要建立 oplog，您需要部署複本集 (若無)。如需詳細資訊，請參閱 [MongoDB 文件](https://docs.mongodb.com/manual/tutorial/deploy-replica-set/)。

您可以使用 CDC 且以 MongoDB 複本集的主要或次要節點做為來源端點。

**將獨立的執行個體轉換成複本集**

1. 使用命令列，連線到 `mongo`。

   ```
   mongo localhost
   ```

1. 停止 `mongod` 服務。

   ```
   service mongod stop
   ```

1. 使用以下命令重新啟動 `mongod`：

   ```
   mongod --replSet "rs0" --auth -port port_number
   ```

1. 使用下列命令測試複本集連線：

   ```
   mongo -u root -p password --host rs0/localhost:port_number 
     --authenticationDatabase "admin"
   ```

如果計劃執行文件模式遷移，請在建立 MongoDB 端點時選取選項 `_id as a separate column`。選取此選項會建立第二個資料行，名為 `_id`，做為主索引鍵。需要此第二欄 AWS DMS ，以支援資料處理語言 (DML) 操作。

**注意**  
AWS DMS 使用 操作日誌 (oplog) 來擷取進行中複寫期間的變更。如果 MongoDB 在 AWS DMS 讀取記錄之前從 oplog 中清除記錄，則任務會失敗。我們建議調整 oplog 的大小，以將變更保留至少 24 小時。

## 使用 MongoDB 做為 來源時的安全需求 AWS DMS
<a name="CHAP_Source.MongoDB.Security"></a>

AWS DMS 支援 MongoDB 的兩種身分驗證方法。這兩種身分驗證方法用於加密密碼，所以它們只能在 `authType` 參數設為 *PASSWORD* 時使用。

MongoDB 身分驗證方法如下所示：
+ **MONGODB-CR** – 適用於往前相容性
+ **SCRAM-SHA-1** – 使用 MongoDB 3.x 和 4.0 版時的預設值

如果未指定身分驗證方法， AWS DMS 會使用 MongoDB 來源版本的預設方法。

## 將 MongoDB 集合分段並平行遷移
<a name="CHAP_Source.MongoDB.ParallelLoad"></a>

為了改善遷移任務的效能，MongoDB 來源端點在資料表對應中支援兩個平行完全載入選項。

換句話說，您可以在 JSON 設定中為平行完全載入，使用自動分段或包含資料表對應的範圍分割，以平行遷移集合。使用自動分割，您可以指定 的條件 AWS DMS ，以自動分割來源以進行每個執行緒中的遷移。透過範圍分割，您可以告知 DMS AWS DMS 在每個執行緒中遷移的每個區段的特定範圍。如需這些設定的詳細資訊，請參閱[資料表和集合設定規則與操作](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.md)。

### 使用自動分段範圍平行遷移 MongoDB 資料庫
<a name="CHAP_Source.MongoDB.ParallelLoad.AutoPartitioned"></a>

您可以指定為 AWS DMS 每個執行緒自動分割 (區段) 資料的條件，以平行方式遷移文件。特別是，您可以指定每個執行緒要遷移的文件數目。使用此方法， 會 AWS DMS 嘗試最佳化區段邊界，以取得每個執行緒的最大效能。

您可以使用下列資料表對應中的資料表設定選項來指定分段條件。


|  資料表設定選項  |  Description  | 
| --- | --- | 
|  `"type"`  |  (必要) 設定 `"partitions-auto"` 以將 MongoDB 作為來源。  | 
|  `"number-of-partitions"`  |  (選用) 用於遷移的分割 (區段) 總數。預設為 16。  | 
|  `"collection-count-from-metadata"`  |  (選用) 如果此選項設為 `true`，則 AWS DMS 會使用估計的收集計數來決定分割的數目。如果此選項設定為 `false`， AWS DMS 會使用實際的收集計數。預設值為 `true`。  | 
|  `"max-records-skip-per-page"`  |  （選用） 決定每個分割區的邊界時要一次略過的記錄數目。 AWS DMS 會使用分頁略過方法來決定分割區的最小邊界。預設值為 10,000。 設定相對較大的值可能會導致游標逾時和任務失敗。設定相對較低的值會導致每頁操作數增加，而且完全載入速度較慢。  | 
|  `"batch-size"`  |  (選用) 限制在單一批次中傳回的文件數。每個批次都需要往返伺服器。如果批次大小為零 (0)，游標會使用伺服器定義的批次大小上限。預設值為 0。  | 

下列範例顯示自動分段的資料表對應。

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "admin",
                "table-name": "departments"
            },
            "rule-action": "include",
            "filters": []
        },
        {
            "rule-type": "table-settings",
            "rule-id": "2",
            "rule-name": "2",
            "object-locator": {
                "schema-name": "admin",
                "table-name": "departments"
            },
            "parallel-load": {
                "type": "partitions-auto",
                "number-of-partitions": 5,
                "collection-count-from-metadata": "true",
                "max-records-skip-per-page": 1000000,
                "batch-size": 50000
            }
        }
    ]
}
```

自動分段具有以下限制。每個區段的遷移會分別擷取集合計數和收集下限 `_id`。然後，其會使用分頁略過來計算該區段的最小邊界。

因此，請確保每個集合的最小 `_id` 值保持不變，直到集合中的所有區段邊界都經過計算為止。如果您在區段邊界計算期間變更集合的最小 `_id` 值，這可能會導致資料遺失或資料列重複錯誤。

### 使用範圍分段平行遷移 MongoDB 資料庫
<a name="CHAP_Source.MongoDB.ParallelLoad.Ranges"></a>

您可以透過為執行緒中的每個區段指定範圍，以平行遷移文件。使用此方法，您可以根據您選擇的每個執行緒文件範圍 AWS DMS ，指示特定文件在每個執行緒中遷移。

下圖顯示了具有七個項目的 MongoDB 集合，並將 `_id` 作為主索引鍵。

![\[包含七個項目的 MongoDB 集合。\]](http://docs.aws.amazon.com/zh_tw/dms/latest/userguide/images/datarep-docdb-collection.png)


若要將集合分割為三個特定區段 AWS DMS ，讓 平行遷移，您可以將資料表映射規則新增至遷移任務。在以下 JSON 範例中會顯示此方法。

```
{ // Task table mappings:
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "testdatabase",
        "table-name": "testtable"
      },
      "rule-action": "include"
    }, // "selection" :"rule-type"
    {
      "rule-type": "table-settings",
      "rule-id": "2",
      "rule-name": "2",
      "object-locator": {
        "schema-name": "testdatabase",
        "table-name": "testtable"
      },
      "parallel-load": {
        "type": "ranges",
        "columns": [
           "_id",
           "num"
        ],
        "boundaries": [
          // First segment selects documents with _id less-than-or-equal-to 5f805c97873173399a278d79
          // and num less-than-or-equal-to 2.
          [
             "5f805c97873173399a278d79",
             "2"
          ],
          // Second segment selects documents with _id > 5f805c97873173399a278d79 and
          // _id less-than-or-equal-to 5f805cc5873173399a278d7c and
          // num > 2 and num less-than-or-equal-to 5.
          [
             "5f805cc5873173399a278d7c",
             "5"
          ]                                   
          // Third segment is implied and selects documents with _id > 5f805cc5873173399a278d7c.
        ] // :"boundaries"
      } // :"parallel-load"
    } // "table-settings" :"rule-type"
  ] // :"rules"
} // :Task table mappings
```

該資料表對應定義會將來源集合分割為三個區段，並平行遷移。以下是分段邊界。

```
Data with _id less-than-or-equal-to "5f805c97873173399a278d79" and num less-than-or-equal-to 2 (2 records)
Data with _id > "5f805c97873173399a278d79" and num > 2 and _id  less-than-or-equal-to "5f805cc5873173399a278d7c" and num less-than-or-equal-to 5 (3 records)
Data with _id > "5f805cc5873173399a278d7c" and num > 5 (2 records)
```

遷移任務完成後，您可以如下列範例所示，從任務日誌中確認資料表是否是平行載入。您也可以確認用來從來源資料表卸載每個區段的 MongoDB `find` 子句。

```
[TASK_MANAGER    ] I:  Start loading segment #1 of 3 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. Start load timestamp 0005B191D638FE86  (replicationtask_util.c:752)

[SOURCE_UNLOAD   ] I:  Range Segmentation filter for Segment #0 is initialized.   (mongodb_unload.c:157)

[SOURCE_UNLOAD   ] I:  Range Segmentation filter for Segment #0 is: { "_id" : { "$lte" : { "$oid" : "5f805c97873173399a278d79" } }, "num" : { "$lte" : { "$numberInt" : "2" } } }  (mongodb_unload.c:328)

[SOURCE_UNLOAD   ] I: Unload finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 2 rows sent.

[TASK_MANAGER    ] I: Start loading segment #1 of 3 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. Start load timestamp 0005B191D638FE86 (replicationtask_util.c:752)
 
[SOURCE_UNLOAD   ] I: Range Segmentation filter for Segment #0 is initialized. (mongodb_unload.c:157) 

[SOURCE_UNLOAD   ] I: Range Segmentation filter for Segment #0 is: { "_id" : { "$lte" : { "$oid" : "5f805c97873173399a278d79" } }, "num" : { "$lte" : { "$numberInt" : "2" } } } (mongodb_unload.c:328)
 
[SOURCE_UNLOAD   ] I: Unload finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 2 rows sent.

[TARGET_LOAD     ] I: Load finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 1 rows received. 0 rows skipped. Volume transfered 480.

[TASK_MANAGER    ] I: Load finished for segment #1 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. 2 records transferred.
```

目前， AWS DMS 支援下列 MongoDB 資料類型做為區段索引鍵資料欄：
+ Double
+ String
+ ObjectId
+ 32 位元整數
+ 64 位元整數

## 使用 MongoDB 做為 來源時遷移多個資料庫 AWS DMS
<a name="CHAP_Source.MongoDB.Multidatabase"></a>

AWS DMS 3.4.5 版和更新版本支援在所有支援的 MongoDB 版本中，在單一任務中遷移多個資料庫。如果您要遷移多個資料庫，請採取這些步驟：

1. 當您建立 MongoDB 來源端點時，請執行以下其中一項：
   + 在 DMS 主控台的**建立端點**頁面上，確定**端點組態**下的**資料庫名稱**是空白的。
   + 使用 AWS CLI `CreateEndpoint`命令，將空字串值指派給 中的 `DatabaseName` 參數`MongoDBSettings`。

1. 對於要從 MongoDB 來源遷移的每個資料庫，請在任務的資料表對應中指定資料庫名稱作為結構描述名稱。您可以使用主控台中的引導式輸入或直接在 JSON 中執行此操作。如需引導式輸入的詳細資訊，請參閱[從主控台指定資料表選取及轉換](CHAP_Tasks.CustomizingTasks.TableMapping.Console.md)。如需 JSON 的相關資訊，請參閱[選取規則與動作](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Selections.md)。

例如，您可以在下列指定 JSON 以遷移三個 MongoDB 資料庫。

**Example 遷移結構描述中的所有資料表**  
下列 JSON 會將來源端點中 `Customers`、`Orders` 和 `Suppliers` 資料庫中的所有資料表遷移至目標端點。  

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "Customers",
                "table-name": "%"
            },
            "rule-action": "include",
            "filters": []
        },
        {
            "rule-type": "selection",
            "rule-id": "2",
            "rule-name": "2",
            "object-locator": {
                "schema-name": "Orders",
                "table-name": "%"
            },
            "rule-action": "include",
            "filters": []
        },
        {
            "rule-type": "selection",
            "rule-id": "3",
            "rule-name": "3",
            "object-locator": {
                "schema-name": "Inventory",
                "table-name": "%"
            },
            "rule-action": "include",
            "filters": []
        }
    ]
}
```

## 使用 MongoDB 做為 來源的限制 AWS DMS
<a name="CHAP_Source.MongoDB.Limitations"></a>

以下是使用 MongoDB 做為 來源時的限制 AWS DMS：
+ 在資料表模式中，集合中的文件必須在相同欄位中用於值的資料類型中保持一致。例如，如果集合中的文件包含 `'{ a:{ b:value ... }'`，則集合中參考該 `a.b` 欄位 `value` 的所有文件都必須在 `value` 使用相同的資料類型，無論其出現在集合中何位置為何。
+ 當 `_id` 選項設為單獨的資料行，ID 字串不能超過 200 個字元。
+ 在資料表模式中，物件 ID 和陣列類型索引鍵都會轉換成以 `oid` 和 `array` 為前綴的資料行。

  這些資料行在內部使用加上前綴的名稱參考。如果您在 中使用參考這些欄 AWS DMS 的轉換規則，請務必指定字首欄。例如，您指定 `${oid__id}` 而不是 `${_id}`，或者 `${array__addresses}` 而不是 `${_addresses}`。
+  集合名稱和索引鍵名稱不能包含金錢符號 (\$1)。
+ AWS DMS 在具有 RDBMS 目標的資料表模式中， 不支援包含具有不同大小寫 （上、下） 之相同欄位的集合。例如， AWS DMS 不支援具有兩個名為 `Field1`和 的集合`field1`。
+ 資料表模式和文件模式都有前文討論的限制。
+ 使用自動分段進行平行遷移時具有前述限制。
+ MongoDB 不支援來源篩選條件。
+ AWS DMS 不支援巢狀層級大於 97 的文件。
+ AWS DMS 遷移至非 DocumentDB目標時， 需要 UTF-8 編碼的來源資料。對於具有non-UTF-8 字元的來源，請在遷移或遷移至 Amazon DocumentDB 之前將其轉換為 UTF-8。
+ AWS DMS 不支援 MongoDB 5.0 版的下列功能：
  + 即時重新分片
  + 用戶端欄位層級加密 (CSFLE)
  + 時間序列集合遷移
**注意**  
在完全載入階段遷移的時間序列集合會轉換為 Amazon DocumentDB 中的一般集合，因為 DocumentDB 不支援時間序列集合。

## 使用 MongoDB 做為 來源時的端點組態設定 AWS DMS
<a name="CHAP_Source.MongoDB.Configuration"></a>

當您設定 MongoDB 來源端點時，您可以使用 AWS DMS 主控台指定多個端點組態設定。

下表說明使用 MongoDB 資料庫做為 AWS DMS 來源時可用的組態設定。


| 設定 (屬性) | 有效值 | 預設值和描述 | 
| --- | --- | --- | 
|  **身分驗證模式**  |  `"none"` `"password"`  |  值 `"password"` 會提示輸入使用者名稱和密碼。指定 `"none"` 時，不會使用使用者名稱和密碼參數。  | 
|  **驗證來源**  |  有效的 MongoDB 資料庫名稱。  |  您要用來驗證憑證以進行驗證的 MongoDB 資料庫名稱。預設值為 `"admin"`。  | 
|  **身分驗證機制**  |  `"default"` `"mongodb_cr"` `"scram_sha_1"`  |  身分驗證機制。` "default"` 值是 `"scram_sha_1"`。設定 `authType` 為 `"no"` 時，不會使用此設定。  | 
|  **中繼資料模式**  |  文件與資料表  |  選擇文件模式或資料表模式。  | 
|  **待掃描的文件數** (`docsToInvestigate`)  |  正整數會大於 `0`。  |  僅在資料表模式中使用此選項來定義目標資料表定義。  | 
|  **\$1id as a separate column**  |  方塊中的核取記號  |  選用的核取記號方塊，其會建立名為 `_id` 的第二個資料欄，作為主索引鍵。  | 
|   `ExtractDocID`   |  `true` `false`  |  `false`：將 `NestingLevel` 設為 `"none"` 時，請使用此屬性。 搭配產生[多文件交易](https://www.mongodb.com/docs/manual/reference/method/Session.startTransaction/#mongodb-method-Session.startTransaction)的來源使用 CDC 時， `ExtractDocId` 參數**必須**設定為 `true`。如果未啟用此參數， AWS DMS 任務會在遇到多文件交易時失敗。  | 
|  `socketTimeoutMS`  |  大於或等於 0 的整數。 僅限額外連線屬性 (ECA)。  |  此設定以毫秒為單位，並為 MongoDB 用戶端設定連線逾時。如果該值小於或等於零，則使用 MongoDB 用戶端預設值。  | 
|   `UseUpdateLookUp`   |  `true` `false`  |  若為 true，在 CDC 更新事件期間， 會將整個更新文件 AWS DMS 複製到目標。設定為 false 時， AWS DMS 會使用 MongoDB 更新命令，僅更新目標上文件中修改的欄位。  | 
|   `ReplicateShardCollections`   |  `true` `false`  |  當為 true 時， 會將資料 AWS DMS 複寫至碎片集合。只有在目標端點是 DocumentDB 彈性叢集時， AWS DMS 才會使用此設定。 當此設定為 true 時，請注意以下事項： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/dms/latest/userguide/CHAP_Source.MongoDB.html)  | 
|  `useTransactionVerification`  |  `true` `false`  |  當 時`false`， 會停用變更串流與 oplog 之間的驗證。  如果變更串流和 oplog 項目之間發生差異，您可能會錯過操作，因為預設的 DMS 行為是在這種情況下使任務失敗。預設：`true`。   | 
|  `useOplog`  |  `true` `false`  |  當 時`true`， 可讓 DMS 任務直接從 'oplog' 讀取，而不是使用變更串流。預設：`false`。  | 

如果您選擇將**文件**作為**中繼資料模式**，則可使用不同的選項。

如果目標端點是 DocumentDB，請確保在**文件模式**中執行遷移。此外，修改來源端點並選取選項 **\$1id as separate column**。如果來源 MongoDB 工作負載涉及交易，這是必要的先決條件。

## MongoDB 的來源資料類型
<a name="CHAP_Source.MongoDB.DataTypes"></a>

使用 MongoDB 做為 來源的資料遷移 AWS DMS 支援大多數 MongoDB 資料類型。在下表中，您可以找到使用 時支援的 MongoDB 來源資料類型， AWS DMS 以及來自 AWS DMS 資料類型的預設映射。如需 MongoDB 資料類型的詳細資訊，請參閱 MongoDB 文件中的 [BSON 類型](https://docs.mongodb.com/manual/reference/bson-types)。

如需如何檢視從目標映射的資料類型資訊，請參閱您要使用的目標端點一節。

如需 AWS DMS 資料類型的詳細資訊，請參閱 [AWS Database Migration Service 的資料類型](CHAP_Reference.DataTypes.md)。


|  MongoDB 資料類型  |  AWS DMS 資料類型  | 
| --- | --- | 
| Boolean | Bool | 
| 二進位 | BLOB | 
| Date | Date | 
| 時間戳記 | Date | 
| Int | INT4 | 
| Long | INT8 | 
| Double | REAL8 | 
| 字串 (UTF-8) | CLOB | 
| 陣列 | CLOB | 
| OID | String | 
| REGEX | CLOB | 
| CODE | CLOB | 