本文概述了如何使用数据管道中的复制活动从 MongoDB 复制数据。
支持的配置
有关复制活动下每个选项卡的配置,请分别转到以下部分。
概况
请参阅 常规 设置 指南,以配置 常规 设置选项卡。
来源
转到“源”选项卡以配置复制活动源。 有关详细配置,请参阅以下内容。
需要以下属性:
- 连接:从连接列表中选择 MongoDB 连接。 如果不存在连接,则通过选择“ 新建”创建新的 MongoDB 连接。
- 数据库:从下拉列表中选择数据库。
- 集合名称:指定 MongoDB 数据库中的集合的名称。 可以从下拉列表中选择集合,或选择 “编辑” 以手动输入它。
- 版本:指定的版本。 建议升级到最新版本,以利用最新的增强功能。 若要了解不同版本之间的差异,请转到本 部分。
在“高级”下,可以指定以下字段:
- 筛选器:使用查询运算符指定选择筛选器。 若要返回集合中的所有文档,请省略此参数或传递空文档 ({})。
-
游标方法:选择 “+ 新建 ”以指定执行基础查询的方式。 执行查询的方法包括:
- 项目:指定要在文档中返回的投影字段。 若要返回匹配文档中的所有字段,请省略此参数。
- sort:指定查询返回匹配文档的顺序。 有关详细信息,请转到 cursor.sort()。
- limit:指定服务器返回的最大文档数。 有关详细信息,请转到 cursor.limit()。
- skip:指定要跳过的文档数,以及 MongoDB 开始返回结果的位置。 有关详细信息,请转到 cursor.skip()。
- 批大小:指定要在 MongoDB 实例的每个响应批次中返回的文档数。 大多数情况下,修改批大小不会影响用户或应用程序。
- 其他列:添加其他数据列以存储源文件的相对路径或静态值。 后者支持表达式。
目的地
转到“目标”选项卡,配置复制活动目标。 有关详细配置,请参阅以下内容。
需要以下属性:
- 数据存储类型:选择 外部。
- 连接:从连接列表中选择 MongoDB 连接。 如果不存在连接,则通过选择“ 新建”创建新的 MongoDB 连接。
- 数据库:从下拉列表中选择数据库。
- 集合名称:指定 MongoDB 数据库中的集合的名称。 可以从下拉列表中选择集合,或选择 “编辑” 以手动输入它。
在“高级”下,可以指定以下字段:
写入行为:介绍如何将数据写入 MongoDB。 允许的值: 插入 和 向上插入。
Upsert 的行为是,如果已存在同样的文档
_id
,则替换该文档;否则,插入新文档。注释
如果在原始文档或列映射中未指定
_id
,该服务会自动生成一个_id
。 为了确保 Upsert 能按预期工作,请确保您的文档具有一个 ID。写入批处理超时:指定批处理插入操作在超时之前完成的等待时间。允许的值为时间跨度。
写入批大小:此属性控制每个批中要写入的文档的大小。 如果文档大小较大,可以尝试增加该值以提高性能并降低该值。
映射
有关 “映射 ”选项卡配置,请参阅 “映射”选项卡下的“配置映射”。当源数据和目标都是分层数据时,不支持映射。
MongoDB 的数据类型映射
从 MongoDB 复制数据时,以下映射将 MongoDB 数据类型转换为服务内部使用的临时数据类型。
MongoDB 数据类型 | 临时服务数据类型(对于版本 1.1) | 临时服务数据类型(适用于版本 1.0) |
---|---|---|
日期 | 日期时间 | 字符串 |
对象标识符 (ObjectId) | 字符串 | 字符串 |
Decimal128 | 字符串 | 字符串 |
时间戳 | 最重要的 32 位 -> 日期时间 最小有效 32 位 -> Int32 |
Int32 |
字符串 | 字符串 | 字符串 |
数组 | 数组 | 数组 |
加倍 | 加倍 | 字符串 |
Int32 | Int32 | 字符串 |
Int64 | Int64 | 字符串 |
布尔型 | 布尔型 | 布尔型 |
NullData | 零 | 零 |
文档 | 字典 | 字典 |
javaScript | 字符串 | 字符串 |
正则表达式 | 字符串 | 字符串 |
minKey | 字符串 | Int32 |
maxKey | 字符串 | Int32 |
二进制 | GUID (当 SubType 为“04”时) 字符串 |
字符串 |
设置
对于“设置”选项卡配置,请转到“设置”选项卡下的“配置其他设置”。
MongoDB 版本之间的差异
下表显示了不同版本之间的功能差异。
版本 1.1 | 版本 1.0 |
---|---|
以下映射用于从 MongoDB 数据类型到中间服务数据类型。 日期 -> Datetime TimeStamp -> 最高有效的 32 位 -> DateTime; 最小有效的 32 位 -> Int32 双 -> 双 Int32 -> Int32 Int64 -> Int64 minKey - > 字符串 maxKey -> 字符串 二进制 -> GUID (当 SubType 为“04”) / 字符串 |
以下映射用于从 MongoDB 数据类型到中间服务数据类型。 日期 -> 字符串 TimeStamp -> Int32 Double -> 字符串 Int32 -> 字符串 Int64 -> 字符串 minKey -> Int32 maxKey -> Int32 二进制 -> 字符串 |
表摘要
下表包含有关 MongoDB 中复制活动的详细信息。
源信息
名称 | DESCRIPTION | 价值 | 必选 | JSON 脚本属性 |
---|---|---|---|---|
数据存储类型 | 你的数据存储类型。 | 外部 | 是的 | / |
连接 | 与源数据存储的连接。 | < 您的 MongoDB 连接 > | 是的 | 连接 |
数据库 | 用作源的数据库。 | < 你的数据库 > | 是的 | 数据库 |
集合名称 | MongoDB 数据库中集合的名称。 | < 你的收藏 > | 是的 | 集合 |
版本 | 指定的版本。 | • 1.1 • 1.0 |
是的 | 版本: • 1.1 • 1.0 |
滤波器 | 使用查询运算符的选择筛选器。 若要返回集合中的所有文档,请省略此参数或传递空文档 ({})。 | < 选择筛选器 > | 否 | 过滤器 |
游标方法 | 执行基础查询的方式。 | • 项目 • 排序 • 限制 • 跳过 |
否 | cursorMethods: •项目 •排序 •限制 跳过 |
批大小 | 从 MongoDB 实例响应中每个批次数返回的文档数量。 |
< 你的写入批大小 > (默认值为 100) |
否 | 批处理大小 |
其他列 | 添加其他数据列以存储源文件的相对路径或静态值。 后者支持表达式。 | • 姓名 •价值 |
否 | 附加列: •名字 •价值 |
目的地信息
名称 | DESCRIPTION | 价值 | 必选 | JSON 脚本属性 |
---|---|---|---|---|
数据存储类型 | 你的数据存储类型。 | 外部 | 是的 | / |
连接 | 与目标数据存储的连接。 | < 您的 MongoDB 连接 > | 是的 | 连接 |
数据库 | 用作目标的数据库。 | < 你的数据库 > | 是的 | 数据库 |
集合名称 | MongoDB 数据库中集合的名称。 | < 你的收藏 > | 是的 | 集合 |
写入行为 | 介绍如何将数据写入 MongoDB。 允许的值: 插入 和 向上插入。 Upsert 的行为是,如果已存在同样的文档 _id ,则替换该文档;否则,插入新文档。注意:如果在原始文档或列映射中未指定 _id ,该服务会自动为文档生成一个_id 。 为了确保 Upsert 能按预期工作,请确保您的文档具有一个 ID。 |
• 插入 (默认值) • Upsert |
否 | writeBehavior: • 插入 • 更新插入 |
写入批处理超时 | 超时前等待批插入操作完成的时间。 | 时间跨度 (默认值为 00:30:00 - 30 分钟) |
否 | writeBatchTimeout |
写入批大小 | 控制每批中要写入的文档的大小。 如果文档大小较大,可以尝试增加此值以提高性能并降低该值。 | < 你的写入批大小 > | 否 | writeBatchSize |