使用 Azure 数据工厂从 MongoDB Atlas 复制数据或将数据复制到其中

适用于: Azure 数据工厂

本文概述如何使用 Azure 数据工厂中的复制活动从/向 MongoDB Atlas 数据库复制数据。 它是基于概述复制活动总体的复制活动概述一文。

支持的功能

可以将 MongoDB Atlas 数据库中的数据复制到任意受支持的接收器数据存储,或将任意受支持的源数据存储中的数据复制到 MongoDB Atlas 数据库。 有关复制活动支持作为源/接收器的数据存储列表,请参阅支持的数据存储表。

具体而言,此 MongoDB Atlas 连接器支持的版本最高为 4.2。

先决条件

如果使用 Azure Integration Runtime 进行复制,请确保将有效区域的 Azure Integration Runtime IP 添加到 MongoDB Atlas IP 访问列表。

入门

若要使用管道执行复制活动,可以使用以下工具或 SDK 之一:

使用 UI 创建到 MongoDB Atlas 的链接服务

使用以下步骤在 Azure 门户 UI 中创建一个到 MongoDB Atlas 的链接服务。

  1. 浏览到 Azure 数据工厂中的“管理”选项卡并选择“链接服务”,然后单击“新建”:

    使用 Azure 数据工厂 UI 创建新的链接服务。

  2. 搜索 MongoDB 并选择 MongoDB Atlas 连接器。

    选择 MongoDB Atlas 连接器。

  3. 配置服务详细信息、测试连接并创建新的链接服务。

    配置到 MongoDB Atlas 的链接服务。

连接器配置详细信息

以下部分详述的属性用于定义特定于 MongoDB Atlas 连接器的数据工厂实体。

链接服务属性

MongoDB Atlas 链接服务支持以下属性:

properties 说明 必需
type type 属性必须设置为:MongoDbAtlas
connectionString 指定 MongoDB Atlas 连接字符串,例如 mongodb+srv://<username>:<password>@<clustername>.<randomString>.<hostName>/<dbname>?<otherProperties>

还可以将连接字符串置于 Azure Key Vault 中。 有关更多详细信息,请参阅在 Azure Key Vault 中存储凭据
database 要访问的数据库的名称。
connectVia 用于连接到数据存储的集成运行时。 在先决条件部分了解更多信息。 如果未指定,则使用默认 Azure Integration Runtime。

示例:

{
    "name": "MongoDbAtlasLinkedService",
    "properties": {
        "type": "MongoDbAtlas",
        "typeProperties": {
            "connectionString": "mongodb+srv://<username>:<password>@<clustername>.<randomString>.<hostName>/<dbname>?<otherProperties>",
            "database": "myDatabase"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

数据集属性

有关可用于定义数据集的各部分和属性的完整列表,请参阅数据集和链接服务。 MongoDB Atlas 数据集支持以下属性:

properties 说明 必需
type 数据集的 type 属性必须设置为:MongoDbAtlasCollection
collectionName MongoDB Atlas 数据库中集合的名称。

示例:

{
    "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 复制活动 source 的 type 属性必须设置为:MongoDbAtlasSource
filter 使用查询运算符指定选择筛选器。 若要返回集合中的所有文档,请省略此参数或传递空文档 ({})。
cursorMethods.project 指定要在文档中返回用于投影的字段。 若要返回匹配文档中的所有字段,请省略此参数。
cursorMethods.sort 指定查询返回匹配文档的顺序。 请参阅 cursor.sort()
cursorMethods.limit 指定服务器返回的文档的最大数量。 请参阅 cursor.limit()
cursorMethods.skip 指定要跳过的文档数量以及 MongoDB Atlas 开始返回结果的位置。 请参阅 cursor.skip()
batchSize 指定从 MongoDB Atlas 实例的每批响应中返回的文档的数量。 大多数情况下,修改批大小不会影响用户或应用程序。 Cosmos DB 限制每个批不能超过 40 MB(这是文档大小的 batchSize 数量的总和),因此如果文档很大,请减小此值。
(默认值为 100

提示

此服务支持在严格模式下使用 BSON 文档。 请确保筛选器查询处于严格模式,而不是 Shell 模式。 有关详细说明,请参阅 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 作为接收器

复制活动 sink 节支持以下属性:

属性 说明 必需
type 复制活动接收器的“type”属性必须设置为“MongoDbAtlasSink”。
writeBehavior 介绍如何将数据写入 MongoDB Atlas。 允许的值为 insertupsert

upsert 的行为是,如果已存在具有相同 _id 的文档,则替换该文档;否则将插入该文档。

注意:如果未在原始文档中指定 _id,或未通过列映射指定 _id,则该服务会自动为文档生成 _id。 这表示必须先确保文档有 ID,才能让 upsert 按预期工作。

(默认值为 insert
writeBatchSize writeBatchSize 属性控制每个批中可写入的文档大小。 可尝试增大 writeBatchSize 的值以提高性能,并在文档大小较大时减小该值。
(默认值为 10,000
writeBatchTimeout 超时前等待批插入操作完成的时间。允许的值为 timespan。
(默认值为 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 集合之间按原样复制文档。
  • 将各种源(包括 Azure Cosmos DB、Azure Blob 存储、Azure Data Lake Storage 和其他受支持的基于文件的存储)中的 JSON 文档导入 MongoDB Atlas。
  • 将 JSON 文档从 MongoDB Atlas 集合导出到各种基于文件的存储。

若要实现这种架构不可知的复制,请跳过数据集中的“结构”(也称为“架构”)节和复制活动中的架构映射 。

架构映射

要将数据从 MongoDB Atlas 复制到表格接收器或进行反向复制,请参阅架构映射

后续步骤

有关复制活动支持作为源和接收器的数据存储的列表,请参阅支持的数据存储