Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
适用于:
Azure 数据工厂
Azure Synapse Analytics
本文介绍了如何在 Azure 数据工厂 和 Synapse Analytics 管道中使用复制活动,以从 MongoDB 数据库复制数据以及将数据复制到 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虚拟网络或 Amazon 虚拟私有云中,则需要配置自承载集成运行时以连接到它。
如果数据存储是托管的云数据服务,则可以使用Azure Integration Runtime。 如果访问仅限于防火墙规则中批准的 IP,则可以将 Azure Integration Runtime IP 添加到允许列表。
还可以在 Azure 数据工厂 中使用 托管虚拟网络集成运行时功能访问本地网络,而无需安装和配置自承载集成运行时。
要详细了解网络安全机制和数据工厂支持的选项,请参阅数据访问策略。
入门
若要使用管道执行复制活动,可以使用以下工具或 SDK 之一:
通过使用界面创建与MongoDB相关的服务
使用以下步骤在 Azure 门户 UI 中创建到 MongoDB 的链接服务。
在你的 Azure 数据工厂 或 Synapse 工作区中浏览“管理”标签,选择“关联服务”。 然后选择新:
搜索 MongoDB 并选择 MongoDB 连接器。
配置服务详细信息、测试连接并创建新的链接服务。
连接器配置详细信息
对于适用于 MongoDB 连接器的 Data Factory 实体,以下部分提供了有关定义这些实体的属性的详细信息。
连接的服务属性
下表列出了MongoDB关联服务所支持的属性:
| 属性 | 描述 | 必需 |
|---|---|---|
| 类型 | 将类型属性设置为: MongoDbV2 | 是 |
| connectionString | 指定MongoDB的连接字符串,例如mongodb://[username:password@]host[:port][/[database][?options]]。 更多细节请参见MongoDB关于连接字符串的手册。 |
还可以在 Azure 密钥保管库 中存放连接字符串。 欲了解更多详情,请参见 Azure 密钥保管库 中的存储凭证。 |是的 | |数据库 |你想访问的数据库名称。 | 是 | | 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()。 | 否 |
| 批量大小 | 指定从 MongoDB 实例的每批响应中返回的文档数量。 在大多数情况下,修改批次大小不会影响用户或应用程序。 Azure Cosmos DB 限制每个批次的大小不能超过 40 MB,这是 batchSize 文档数量之和,所以如果文档大小较大,应减少这个数值。 | 否 (默认值为 100) |
提示
服务支持在严格模式下读取 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。 upsert 的行为是,如果已存在具有相同 _id 的文档,则替换该文档;否则将插入该文档。注意:如果在原始文档中或通过列映射未指定 ,服务会自动为文档生成 _id。 这表示必须先确保文档有 ID,才能让 upsert 按预期工作。 |
否 (默认值为 insert) |
| writeBatchSize | writeBatchSize 属性控制每个批次要写入的文档数量。 为了提升性能,可以尝试提高数值。 如果你的文档大小很大,可以尝试减少数值。 | 否 (默认值为 10,000) |
| writeBatchTimeout | 超时前批量插入操作所需的等待时间。允许的值为时间跨度。 | 否 (默认值为 00:30:00 - 30 分钟) |
提示
要按原样导入 JSON 文档,请参见 导入或导出 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 Storage和其他支持的基于文件的存储。
- 将 JSON 文档从 MongoDB 集合导出到各种基于文件的存储。
若要实现这种架构不可知的复制,请跳过数据集中的“结构”(也称为“架构”)部分,以及复制活动中的架构映射。
MongoDB 的数据类型映射
当你从MongoDB复制数据时,服务会使用以下从MongoDB数据类型到临时数据类型的映射。 有关复制活动如何将源架构和数据类型映射到接收端的详细信息,请参阅 架构和数据类型映射。
| MongoDB 数据类型 | 临时服务数据类型 |
|---|---|
| 日期 | Int64 |
| 对象标识符 (ObjectId) | String |
| Decimal128 | String |
| 时间戳 | 最重要的 32 位 -> Int64 最小有效 32 位 -> Int64 |
| String | String |
| Double | String |
| Int32 | Int64 |
| Int64 | Int64 |
| 布尔 | 布尔 |
| Null | Null |
| JavaScript | String |
| 正则表达式 | String |
| 最小键 | Int64 |
| 最大键 | Int64 |
| Binary | String |
MongoDB 连接器生命周期和升级
下表显示了不同版本的 MongoDB 连接器的发布阶段和更改日志:
| 版本 | 发布阶段 | 更改日志 |
|---|---|---|
| MongoDB (旧版) | Removed | 不適用。 |
| MongoDB | GA版本现已可用 | • 仅支持等效的 MongoDB 查询。 •“双精度”作为字符串数据类型进行读取。 |
升级 MongoDB 链接服务
创建新的 MongoDB 链接服务,并通过引用链接服务属性对其进行配置。
相关内容
为了获取复制活动支持的数据源和汇集列表,请参阅支持的数据存储。