使用 Azure Data Factory 或 Synapse Analytics 從 MongoDB 複製資料

適用於: Azure Data Factory Azure Synapse Analytics

秘訣

Data Factory in Microsoft Fabric 是下一代的 Azure Data Factory,擁有更簡單的架構、內建 AI 及新功能。 如果你是資料整合新手,建議先從 Fabric Data Factory 開始。 現有的 ADF 工作負載可升級至 Fabric,以存取資料科學、即時分析與報告等新能力。

本文說明如何在 Azure Data Factory 與 Synapse Analytics 的管線中使用複製活動,將資料從 MongoDB 資料庫複製或複製到資料庫。 本文是根據複製活動概觀一文,該文提供複製活動的一般概觀。

Note

此連接器也可在 Microsoft Fabric 的 Data Factory 中取得。 關於 Fabric 專屬的配置與功能,請參閱 Fabric MongoDB 連接器文件。

重要事項

新的 MongoDB 連接器提供改良的原生 MongoDB 支援。 如果你在解決方案中使用了舊版 MongoDB 連接器,且僅支援向下相容 as-is,請參見 MongoDB 連接器(舊版)。 你可以用這個連接器從 Azure DocumentDB(支援 MongoDB)複製資料。

支援的功能

此 MongoDB 連接器支援以下功能:

支援的功能 IR
複製活動 (來源/接收) (1) (2)

(1) Azure 整合執行時 (2) 自架整合執行時

關於支援作為來源與匯的資料儲存清單,請參閱 支援的資料儲存 表。

具體而言,這個 MongoDB 連接器所支援的版本最高可達 4.2 版。 如果您的工作需要比 4.2 更新的版本,請考慮搭配 MongoDB Atlas 連接器使用 MongoDB Atlas,以提供更完整的支援和功能。

先決條件

如果你的資料儲存位於本地網路、Azure虛擬網路或亞馬遜虛擬私人雲中,你需要配置一個自架整合執行時來連接它。

如果你的資料儲存是雲端管理型資料服務,你可以使用Azure Integration Runtime。 如果存取權限限制在防火牆規則中核准的 IP,你可以將 Azure Integration Runtime IPs 加入允許清單。

你也可以在 Azure Data Factory 中使用 managed 虛擬網路整合執行時功能,無需安裝和設定自架整合執行環境即可存取本地網路。

如需 Data Factory 支援的網路安全性機制和選項的詳細資訊,請參閱資料存取策略。

開始使用

若要使用管線執行複製活動,您可以使用下列其中一個工具或 SDK:

透過使用者介面建立與 MongoDB 連結的服務

請依照以下步驟在 Azure 入口網站介面中建立與 MongoDB 的連結服務。

  1. 請瀏覽 Azure Data Factory 或 Synapse 工作區的「管理」標籤,選擇連結服務。 然後選擇新:

  2. 搜尋 MongoDB,然後選取 MongoDB 連接器。

    選取 MongoDB 連接器。

  3. 設定服務詳細資料,測試連線,然後建立新的連結服務。

    設定與 MongoDB 的連結服務。

連接器設定詳細資料

下列各節提供屬性的相關詳細資料,這些屬性是用來定義 MongoDB 連接器專屬的 Data Factory 實體。

連結服務屬性

下表列出了 MongoDB 連結服務所支援的屬性:

屬性 描述 必要
型別 將型別屬性設為: MongoDbV2 是
connectionString 指定 MongoDB 的 連接字串,例如 mongodb://[username:password@]host[:port][/[database][?options]]。 更多細節請參閱 MongoDB 的 連接字串 手冊。

你也可以在 Azure Key Vault 裡存放一個連接字串。 欲了解更多細節,請參閱 Store credentials in Azure Key Vault。
是
資料庫 您要存取的資料庫名稱。 是
connectVia 用於連接資料儲存庫的 Integration Runtime。 若要深入了解,請參閱必要條件一節。 如果你沒有指定這個屬性,就會使用預設的Azure Integration Runtime。 否

範例︰

{
    "name": "MongoDBLinkedService",
    "properties": {
        "type": "MongoDbV2",
        "typeProperties": {
            "connectionString": "mongodb://[username:password@]host[:port][/[database][?options]]",
            "database": "myDatabase"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

資料集屬性

如需完整區段與屬性清單,請參見 資料集與連結服務。 下表列出 MongoDB 資料集所支援的屬性:

屬性 描述 必要
型別 將資料集的類型屬性設為: MongoDbV2Collection 是
collectionName MongoDB 資料庫中集合的名稱。 是

範例︰

{
    "name": "MongoDbDataset",
    "properties": {
        "type": "MongoDbV2Collection",
        "typeProperties": {
            "collectionName": "<Collection name>"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<MongoDB linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

複製活動屬性

如需可用來定義活動的區段和屬性完整清單,請參閱管線一文。 本節提供 MongoDB 來源和接收器所支援的屬性清單。

MongoDB 作為來源

複製活動的 來源 區段支援下列屬性:

屬性 描述 必要
型別 將複製活動來源的類型屬性設為: MongoDbV2Source 是
篩選 使用查詢運算子指定選取範圍篩選。 若要傳回集合中的所有文件,請省略此參數,或傳遞空白文件 ({})。 否
cursorMethods.project 指定要在文件中傳回以便投影的欄位。 若要傳回比對文件中的所有欄位,請省略此參數。 否
cursorMethods.sort 指定查詢傳回比對文件的順序。 請參閱 cursor.sort()。 否
cursorMethods.limit 指定伺服器傳回的文件數目上限。 請參閱 cursor.limit()。 否
cursorMethods.skip 指定要跳過的文件數,以及 MongoDB 開始傳回結果的位置。 請參閱 cursor.skip()。 否
batchSize 指定要在回應的每個批次中從 MongoDB 執行個體傳回的文件數目。 在大多數情況下,修改批次大小不會影響使用者或應用程式。 Azure Cosmos DB 限制每個批次的大小不得超過 40 MB,這是 batchSize 文件數量大小的總和,所以如果你的文件大小很大,請降低這個值。 否
(預設為 100)

秘訣

此服務支援以 Strict 模式取用 BSON 文件。 確保你的篩選查詢是嚴格模式,而非 Shell 模式。 欲了解更多資訊,請參閱 MongoDB 手冊。

範例︰

"activities":[
    {
        "name": "CopyFromMongoDB",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<MongoDB input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "MongoDbV2Source",
                "filter": "{datetimeData: {$gte: ISODate(\"2018-12-11T00:00:00.000Z\"),$lt: ISODate(\"2018-12-12T00:00:00.000Z\")}, _id: ObjectId(\"5acd7c3d0000000000000000\") }",
                "cursorMethods": {
                    "project": "{ _id : 1, name : 1, age: 1, datetimeData: 1 }",
                    "sort": "{ age : 1 }",
                    "skip": 3,
                    "limit": 3
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

MongoDB 做為接收器

複製活動接收器區段支援下列屬性:

屬性 描述 必要
型別 將複製活動匯入的 類型 屬性設為 MongoDbV2Sink。 是
writeBehavior 描述如何將資料寫入至 MongoDB。 允許的值:insert 和 upsert。

如果存在具有相同 的文件,_id 的行為會用來取代文件;否則會插入文件。

附註:如果未在原始文件中或藉由資料行對應來指定 _id,則服務會自動為文件產生 _id。 這表示您必須確定,為了讓 upsert 如預期般運作,您的文件具有識別碼。
否
(預設值為 insert)
writeBatchSize writeBatchSize 屬性控制每個批次要寫入的文件數量。 為了提升效能,試著提高數值。 如果你的文件大小很大,試著縮小這個值。 否
(預設值為 10,000)
writeBatchTimeout 在逾時前等待批次插入作業完成的時間。允許的值為時間範圍。 否
(預設為 00:30:00 - 30 分鐘)

秘訣

若要匯入 JSON 文件 as-is,請參閱 匯入或匯出 JSON 文件 章節。 若要從表格形狀的資料複製,請參見 結構映射。

範例

"activities":[
    {
        "name": "CopyToMongoDB",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Document DB output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "MongoDbV2Sink",
                "writeBehavior": "upsert"
            }
        }
    }
]

匯入和匯出 JSON 文件

使用這個 MongoDB 連接器即可輕鬆:

  • 在兩個 MongoDB 集合之間依原樣複製文件。
  • 從各種來源匯入 JSON 文件到 MongoDB,包括 Azure Cosmos DB、Azure Blob 儲存、Azure Data Lake Store 及其他支援的檔案式儲存。
  • 將 JSON 文件從 MongoDB 集合匯出至各種檔案型存放區。

若要完成這種跨平台結構描述的複製,請跳過資料集中的「結構」(也稱為「結構描述」) 區段,以及複製活動中的結構描述對應。

MongoDB 的資料類型對應

當你從 MongoDB 複製資料時,服務會使用以下從 MongoDB 資料型別到臨時資料型別的映射。 如需進一步瞭解複製活動如何將來源結構描述和資料型態對應到接收端,請參閱 結構描述和資料型態對應。

MongoDB 資料類型 臨時服務資料類型
Date Int64
ObjectId (物件識別碼) 繩子
Decimal128 繩子
時間戳記 最顯著的 32 個位元 -> Int64
最不重要的 32 位元 -> Int64
繩子 繩子
Double 繩子
Int32 Int64
Int64 Int64
布林值 布林值
Null Null
JavaScript 繩子
正則表達式 繩子
最小鍵 Int64
最大鍵 Int64
Binary 繩子

MongoDB 連接器生命週期和升級

下表顯示不同 MongoDB 連接器版本的發行階段和變更記錄:

版本 發行階段 變更紀錄
MongoDB (舊版) Removed 不適用。
MongoDB GA 版本可用 • 僅支援對等的 MongoDB 查詢。

• Double 會讀取為字串資料類型。

升級 MongoDB 連結服務

建立新的 MongoDB 連結服務,並藉由參考連結服務屬性加以設定。

如需複製活動支援作為來源和接收器的資料存放區清單,請參閱支援的資料存放區。