大数据智能体工作台 DataBuddy MongoDB 数据源

MongoDB 是一款高性能、开源的 NoSQL 文档数据库,以灵活的文档模型与强大的横向扩展能力著称,广泛应用于 Web 应用、移动应用与大数据分析场景。DataBuddy 数据接入支持将 MongoDB 作为来源端进行实时整库同步与离线同步。这里说明其连接配置、能力支持范围、前提条件与常。

相关产品
大数据智能体工作台 DataBuddy 产品页,含版本规格、价格与购买入口。

二、支持的版本

类型 支持版本
自建 MongoDB 3.6 / 4.0 / 4.2 / 4.4 / 5.0 / 6.0 / 7.0 / 8.0
腾讯云数据库 MongoDB 3.6 / 4.0 / 4.2 / 4.4 / 5.0 / 6.0 / 7.0 / 8.0

实时同步(Change Streams)要求 MongoDB 版本 ≥ 3.6。

三、读取能力

能力 支持情况 说明
离线同步(读 / 写) ✓ / – 支持作为离线同步任务的源端读取数据;DataBuddy 数据源仅支持接入读取,不支持写入
实时同步(读 / 写) ✓ / – 支持作为实时同步任务的源端读取整库数据变更;DataBuddy 数据源仅支持接入读取,不支持写入

完整数据源能力对照参见 支持的数据源与读取能力。

五、实时同步限制

限制项 说明
版本要求 MongoDB 版本必须 ≥ 3.6
副本集 需配置为副本集(Replica Set)模式才能使用 Change Streams
oplog 保留 需要足够的 oplog 保留时间以支持增量同步
系统集合 不支持 system.* 等系统集合的同步

六、离线同步限制

限制项 说明
单文档大小 不超过 16 MB(MongoDB 限制)
嵌套深度 建议控制文档嵌套深度,过深可能影响性能

七、支持的字段类型

完整 BSON 类型请参见 MongoDB 产品文档。

字段类型 离线读 实时读
Int32 / Int64 / Long / Double / Decimal128 ✅ ✅
Boolean / String / ObjectId / UUID / Symbol / Regex ✅ ✅
JavaScript / BinData ✅ ✅
Date / Timestamp ✅ ✅
Object / Array / Null / Undefined / MinKey / MaxKey / DBPointer ✅ ✅

注意:说明:

注意:MongoDB 为 Schema-free 数据库,同一字段可能存在多种类型,建议在源端统一字段类型以避免同步异常。

八、字段类型映射(离线同步)

同步时源端字段类型会转换为 DataBuddy 内部类型(同步链路中的中间类型)。配置任务前请重点核对「备注」列标注的类型,避免精度丢失或语义变化。

源端类型(BSON) DataBuddy 内部类型 备注
Int32 / Int64 Long –
Double(声明为 INT / INT32 / INTEGER / INT64 / BIGINT) Long 截断取整,丢失小数部分
Double(其他声明) Double 遵循 IEEE 754 浮点精度
Decimal128 String 按文本读取,高精度的十进制语义保留为字符串
Boolean Boolean –
Date / Timestamp Date –
String String –
ObjectId / Symbol / Regex / JavaScript / JavaScript(with scope) String 按文本读取,不做结构解析
BinData / UUID String 按文本读取,不做内容解析
Object / Array String 按 JSON 文本序列化读取
Null / Undefined / MinKey / MaxKey / DBPointer String 取不到值时按空值读取

九、字段类型映射(实时同步)

实时同步(整库多表)由 CDC 连接器解析源端类型并写入 TCLake。下表为自动建表时目标表实际使用的字段类型 ,配置任务前请重点核对「备注」列标注的类型。

源端类型(BSON) TCLake 目标类型 备注
Int INTEGER –
Long LONG –
Double DOUBLE –
Decimal128 DECIMAL –
Boolean BOOLEAN –
Date TIMESTAMP –
Timestamp TIMESTAMP 精度为秒级
String STRING –
Object / Array STRING 按文本读取,不解析结构
ObjectId / Symbol / Regex / JavaScript / JavaScript(with scope) STRING 按文本读取
BinData STRING 二进制按字符串承载
DBPointer / MinKey / MaxKey / Null / Undefined STRING 按文本读取

十一、DML

操作 是否支持 说明
INSERT / UPDATE / REPLACE / DELETE 是 文档级变更操作

十二、DDL

操作 是否支持
DROP COLLECTION / DROP DATABASE / RENAME COLLECTION 否

MongoDB 基于 Change Streams 进行变更捕获,不支持 DDL 变更的自动同步。集合的删除、重命名等操作需要在目标端手动处理。

十四、1. 确认副本集配置(仅实时同步)

rs.status()

十五、2. 配置账号权限

离线同步 :

use admindb.createUser({ user: "wedata_user", pwd: "your_password", roles: [{ role: "read", db: "your_database" }]})

实时同步 :

use admindb.createUser({ user: "wedata_cdc_user", pwd: "your_password", roles: [ { role: "read", db: "your_database" }, { role: "read", db: "local" } // 读取 oplog 必需 ]})

十六、3. 配置 oplog 大小(仅实时同步)

use localdb.oplog.rs.stats() // 查看当前 oplog 配置db.adminCommand({ replSetResizeOplog: 1, size: 10240 }) // 单位 MB

注意:说明:

注意:修改 oplog 大小需要在副本集每个节点执行。

十八、操作步骤

1. 登录 DataBuddy 控制台。

2. 在顶部切换到目标地域和 Workspace。

3. 进入 数据集成 > 数据源管理 (或 平台管理 > 数据源管理 )。

4. 点击 添加数据源 ,选择 MongoDB 。

5. 填写连接配置与认证信息,详见 参数说明。

6. 点击 连通性测试 (参见 数据源连通性测试)。

7. 测试通过后点击 保存 或 保存 & 创建任务 。

十九、参数说明

参数 说明 是否必填
数据源名称 数据源在工作空间内的唯一标识 是
连接地址 MongoDB 连接地址(见下方格式) 是
数据库 默认连接的数据库 是
用户名 数据库连接账号(如开启认证) 视认证情况
密码 数据库连接密码(如开启认证;支持 SSM 凭证托管) 视认证情况
数据源版本 见 支持的版本 是

20、连接地址格式

部署方式 格式示例
单节点 mongodb://host:port
副本集 mongodb://host1:port1,host2:port2,host3:port3/?replicaSet=rsName
分片集群 mongodb://mongos1:port1,mongos2:port2

完整示例:

mongodb://10.0.0.1:27017,10.0.0.2:27017,10.0.0.3:27017/?replicaSet=rs0mongodb://10.0.0.1:27017/mydb?authSource=admin

22、实时整库

配置项 说明
来源表范围 指定集合 (仅同步选中的几个,新增集合需重启)/ 正则匹配 (指定库名 + 集合名正则,符合规则的新增集合自动接入)
读取模式 全量 + 增量 / 仅增量
订阅类型 可勾选 INSERT / UPDATE / DELETE,至少勾选一种

23、离线单表

参数 说明
库 / 集合 必填;支持选择或手动输入
筛选条件 MongoDB 查询条件(JSON 格式)

筛选条件示例:

{"age": {"$gte": 18}, "status": "active"}{"create_time": {"$gte": {"$date": "2024-01-01T00:00:00Z"}}}

详细任务配置参见 表到表同步 与 实时整库多表任务配置。

24、最佳实践

·账号权限最小化 :使用专用账号,避免 root 权限。

·oplog 保留时间 :建议 ≥ 72 小时,防止任务重启后数据丢失。

·索引优化 :离线同步时在查询字段上建索引以提升读取效率。

·网络打通 :优先使用内网连接。

26、Q:连接失败?

A:检查网络连通性、确认用户名密码正确、检查 authSource 配置。

27、Q:报错 Change Streams 不可用?

A:MongoDB 未配置为副本集模式或版本 < 3.6。请将 MongoDB 配置为副本集,并升级到 3.6 及以上版本。

28、Q:增量同步报错找不到 oplog?

A:oplog 保留时间太短,已被覆盖。增加 oplog 大小:

db.adminCommand({ replSetResizeOplog: 1, size: 20480 })

29、Q:同步过程中报错类型不匹配?

A:MongoDB 是 Schema-free 的,同一字段可能存在不同类型。建议在源端统一数据类型,或在写入端配置类型转换。

30、Q:某些文档同步失败?

A:单文档超过 16 MB 限制。请拆分大文档,或使用 GridFS 存储大文件。

31、相关文档

·添加数据源连接

·数据源连通性测试

·支持的数据源与读取能力

·实时整库多表任务配置

赞 (0)
上一篇 5天前
下一篇 5天前