Compartilhar via

使用 Azure 数据工厂 或 Synapse Analytics 将数据从 MongoDB Atlas 复制或复制到 MongoDB Atlas

适用于: Azure 数据工厂 Azure Synapse Analytics

本文概述了如何在 Azure 数据工厂 或 Synapse Analytics 管道中使用复制活动,将数据从 MongoDB Atlas 数据库复制到其他地方,或从其他地方复制到 MongoDB Atlas 数据库。 基于提供复制活动一般概述的复制活动概述一文。

支持的功能

此 MongoDB Atlas 连接器支持以下功能:

支持的功能 IR
复制活动 (源/接收器) (1) (2)

(1) Azure集成运行时 (2) 自承载集成运行时

如需可以用作源/接收器的数据存储的列表,请参阅支持的数据存储表。

先决条件

如果数据存储位于本地网络、Azure虚拟网络或 Amazon 虚拟私有云中,则需要配置自承载集成运行时以连接到它。

如果数据存储是托管的云数据服务,则可以使用Azure Integration Runtime。 如果访问仅限于防火墙规则中批准的 IP,则可以将 Azure Integration Runtime IP 添加到允许列表。

还可以在 Azure 数据工厂 中使用 托管虚拟网络集成运行时功能访问本地网络,而无需安装和配置自承载集成运行时。

要详细了解网络安全机制和数据工厂支持的选项,请参阅数据访问策略

入门

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

在 UI 中创建连接到 MongoDB Atlas 的服务

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

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

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

    选择 MongoDB Atlas 连接器。

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

    配置 MongoDB Atlas 的链接服务。

连接器配置详细信息

以下各部分提供了有关用于定义特定于 MongoDB Atlas 连接器的数据工厂实体的属性的详细信息。

连接的服务属性

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

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

还可以在 Azure 密钥保管库 中存放连接字符串。 有关更多详细信息,请参阅《Azure 密钥保管库 中存储凭据》。
数据库 要访问的数据库的名称。
驱动程序版本 将驱动程序版本指定为 v2,它支持 MongoDB 3.6 及更高版本。�有关详细信息,请转到此文章
connectVia 连接到数据存储时要使用的Integration Runtime。 在先决条件部分了解更多信息。 如果未指定,则使用默认Azure Integration Runtime。

示例:

{
    "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
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部分支持以下属性:

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

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

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

(默认值为 insert
writeBatchSize writeBatchSize 属性控制每个批中可写入的文档大小。 可尝试增大 writeBatchSize 的值以提高性能,并在文档大小较大时减小该值。
(默认值为 10,000
writeBatchTimeout 在超时发生前,等待批量插入操作完成的时间。允许的值为时间跨度。
(默认值为 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 Storage和其他支持的基于文件的存储。
  • 将 JSON 文档从 MongoDB Atlas 集合导出到各种基于文件的存储。

为了实现与架构无关的复制,请在数据集中的“架构”(也称为< c0 >schema< /c0 >)部分和复制活动中的架构映射中跳过该节。

模式映射

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

MongoDB Atlas 的数据类型映射

从 MongoDB Atlas 复制数据时,会使用以下从 MongoDB Atlas 数据类型到服务内部使用的临时数据类型的映射。 若要了解复制活动如何将源架构和数据类型映射到接收器,请参阅架构和数据类型映射

MongoDB Atlas 数据类型 临时服务数据类型
日期 String
对象标识符 (ObjectId) String
Decimal128 String
时间戳 最重要的 32 位 -> Int64
最小有效 32 位 -> Int64
String String
Double String
Int32 String
Int64 String
布尔 布尔
Null Null
JavaScript String
正则表达式 String
最小键 Int64
最大键 Int64
Binary String

为了获取复制活动支持的数据源和汇集列表,请参阅支持的数据存储