使用 Azure Data Factory 或 Synapse Analytics 從 MongoDB Atlas 複製資料或將資料複製到 MongoDB
適用於:Azure Data Factory Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費啟動新的試用版!
本文概述如何使用 Azure Data Factory 或 Synapse Analytics 管線中的複製活動,從 MongoDB Atlas 資料庫複製資料或將資料複製到其中。 本文是根據複製活動概觀一文,該文提供複製活動的一般概觀。
支援的功能
此 MongoDB Atlas 連接器支援下列功能:
支援的功能 | IR |
---|---|
複製活動 (來源/接收) | ① ② |
① Azure 整合執行階段 ② 自我裝載整合執行階段
如需支援做為來源/接收器的資料存放區清單,請參閱支援的資料存放區表格。
必要條件
如果您的資料存放區位於內部部署網路、Azure 虛擬網路或 Amazon 虛擬私人雲端中,則必須設定自我裝載整合執行階段以與其連線。
如果您的資料存放區是受控雲端資料服務,則可使用 Azure Integration Runtime。 如果只能存取防火牆規則中核准的 IP,您可以將 Azure Integration Runtime IP 新增至允許清單。
您也可以使用 Azure Data Factory 中的受控虛擬網路整合執行階段功能來存取內部部署網路,而不需要安裝和設定自我裝載整合執行階段。
如需 Data Factory 支援的網路安全性機制和選項的詳細資訊,請參閱資料存取策略。
開始使用
若要透過管線執行複製活動,您可以使用下列其中一個工具或 SDK:
使用 UI 建立連結至 MongoDB Atlas 的服務
使用下列步驟,在 Azure 入口網站 UI 中建立連結至 MongoDB Atlas 的服務。
前往 Azure Data Factory 或 Synapse 工作區的 [管理] 索引標籤,選取 [連結服務],然後按一下 [新增]:
搜尋 MongoDB Atlas,然後選取 MongoDB Atlas 連接器。
設定服務詳細資料,測試連線,然後建立新的連結服務。
連接器設定詳細資料
下列各節提供屬性的相關詳細資料,這些屬性是用來定義 MongoDB Atlas 連接器專屬的 Data Factory 實體。
連結服務屬性
以下是針對 MongoDB Atlas 連結服務支援的屬性:
屬性 | 描述 | 必要 |
---|---|---|
type | 類型屬性必須設定為:MongoDbAtlas | Yes |
connectionString | 指定 MongoDB Atlas 連接字串,例如 mongodb+srv://<username>:<password>@<clustername>.<randomString>.<hostName>/<dbname>?<otherProperties> 。 您也可以在 Azure Key Vault 中放置連接字串。 如需詳細資訊,請參閱在 Azure Key Vault 中儲存認證。 |
Yes |
database | 您要存取的資料庫名稱。 | Yes |
driverVersion | 將驅動程式版本指定為 v2,其支援 MongoDB 3.6 版和更新版本。 如需詳細資訊,請移至此文章。 | No |
connectVia | 用於連線到資料存放區的 Integration Runtime。 深入了解必要條件一節。 如果未指定,就會使用預設的 Azure Integration Runtime。 | No |
範例:
{
"name": "MongoDbAtlasLinkedService",
"properties": {
"type": "MongoDbAtlas",
"typeProperties": {
"connectionString": "mongodb+srv://<username>:<password>@<clustername>.<randomString>.<hostName>/<dbname>?<otherProperties>",
"database": "myDatabase",
"driverVersion": "<driver version>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
資料集屬性
如需定義資料集的區段和屬性完整清單,請參閱資料集和連結服務。 以下是針對 MongoDB Atlas 資料集支援的屬性:
屬性 | 描述 | 必要 |
---|---|---|
type | 資料集的類型屬性必須設定為:MongoDbAtlasCollection | Yes |
collectionName | MongoDB Atlas 資料庫中集合的名稱。 | Yes |
範例:
{
"name": "MongoDbAtlasDataset",
"properties": {
"type": "MongoDbAtlasCollection",
"typeProperties": {
"collectionName": "<Collection name>"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<MongoDB Atlas linked service name>",
"type": "LinkedServiceReference"
}
}
}
複製活動屬性
如需可用來定義活動的區段和屬性完整清單,請參閱管線一文。 本節提供 MongoDB Atlas 來源和接收器所支援的屬性清單。
MongoDB Atlas 作為來源
複製活動的 source 區段支援下列屬性:
屬性 | 描述 | 必要 |
---|---|---|
type | 複製活動來源的類型屬性必須設定為:MongoDbAtlasSource | Yes |
filter | 使用查詢運算子指定選取範圍篩選。 若要傳回集合中的所有文件,請省略此參數,或傳遞空白文件 ({})。 | No |
cursorMethods.project | 指定要在文件中傳回以便投影的欄位。 若要傳回比對文件中的所有欄位,請省略此參數。 | No |
cursorMethods.sort | 指定查詢傳回比對文件的順序。 請參閱 cursor.sort()。 | No |
cursorMethods.limit | 指定伺服器傳回的文件數目上限。 請參閱 cursor.limit()。 | No |
cursorMethods.skip | 指定要跳過的文件數,以及 MongoDB Atlas 開始傳回結果的位置。 請參閱 cursor.skip()。 | No |
batchSize | 指定要在回應的每個批次中從 MongoDB Atlas 執行個體傳回的文件數目。 在大部分情況下,修改批次大小不會影響使用者或應用程式。 Azure Cosmos DB 限制每個批次的大小不能超過 40 MB,也就是文件大小的 batchSize 總數,因此,如果您的文件大小很大,請降低此值。 | No (預設為 100) |
提示
此服務支援以 Strict 模式取用 BSON 文件。 請確定您的篩選查詢處於 Strict 模式,而非 Shell 模式。 如需詳細說明,請參閱 MongoDB manual (MongoDB 手冊)。
範例:
"activities":[
{
"name": "CopyFromMongoDbAtlas",
"type": "Copy",
"inputs": [
{
"referenceName": "<MongoDB Atlas input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "MongoDbAtlasSource",
"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 Atlas 作為接收器
複製活動的 [接收] 區段支援下列屬性:
屬性 | 描述 | 必要 |
---|---|---|
type | 複製活動接收器的類型屬性必須設定為 MongoDbAtlasSink。 | Yes |
writeBehavior | 描述如何將資料寫入至 MongoDB Atlas。 允許的值:insert 和 upsert。 如果存在具有相同 _id 的文件,upsert 的行為會用來取代文件;否則會插入文件。附註:如果未在原始文件中或藉由資料行對應來指定 _id ,則服務會自動為文件產生 _id 。 這表示您必須確定,為了讓 upsert 如預期般運作,您的文件具有識別碼。 |
No (預設值為 insert) |
writeBatchSize | writeBatchSize 屬性可控制在每個批次中寫入的文件大小。 您可以嘗試增加 writeBatchSize 的值來改善效能,如果您的文件大小很大,則可嘗試降低此值。 | No (預設值為 10,000) |
writeBatchTimeout | 在逾時前等待批次插入作業完成的時間。允許的值為時間範圍。 | No (預設為 00:30:00 - 30 分鐘) |
提示
若要以現況匯入 JSON 文件,請參閱匯入或匯出 JSON 文件一節;若要從表格式資料複製,請參閱結構描述對應。
範例
"activities":[
{
"name": "CopyToMongoDBAtlas",
"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": "MongoDbAtlasSink",
"writeBehavior": "upsert"
}
}
}
]
匯入和匯出 JSON 文件
您可以使用此 MongoDB Atlas 連接器輕鬆地:
- 在兩個 MongoDB Atlas 集合之間依原樣複製文件。
- 將 JSON 文件從各種來源匯入到 MongoDB Atlas,包括 Azure Cosmos DB、Azure Blob 儲存體、Azure Data Lake Store 及其他支援的檔案型存放區。
- 將 JSON 文件從 MongoDB Atlas 集合匯出至各種檔案型存放區。
若要完成這種跨平台結構描述的複製,請跳過資料集中的「結構」(也稱為「結構描述」) 區段,以及複製活動中的結構描述對應。
結構描述對應
若要將資料從 MongoDB Atlas 複製到表格式接收器,或將資料從表格式接收器複製到 MongoDB,請參閱結構描述對應。
相關內容
如需複製活動支援作為來源和接收器的資料存放區清單,請參閱支援的資料存放區。