操作场景
在应用程序中集成云数据库 MongoDB 时,开发者需要通过对应编程语言的驱动(Driver)建立与数据库实例的连接,并执行数据读写操作。云数据库 MongoDB 100%兼容 MongoDB 协议,您可以直接使用 MongoDB 官方驱动或社区主流驱动接入,无需额外适配。
本文档提供各编程语言驱动的连接示例和使用指南,帮助您:
快速接入:提供经过验证的连接代码模板,包含认证配置、连接池设置和错误处理,开箱即用。
规避常见问题:针对腾讯云 MongoDB 的认证机制(
authSource=admin)、网络环境(VPC 内网访问)、密码特殊字符转义等要点,在示例中给出明确说明。生产级实践:除基础连接外,每个语言示例均包含连接池配置建议、异常处理和资源释放等生产环境的关键实践。
连接准备
在使用任何语言驱动连接云数据库 MongoDB 之前,请确保满足以下前提条件:
已创建云数据库 MongoDB 实例,且实例状态为运行中。具体操作,请参见 创建 MongoDB 实例。
已准备一台与 MongoDB 实例在同一 VPC 内的云服务器 CVM,作为连接客户端。云数据库 MongoDB 当前默认支持内网访问,可开通外网。
已获取数据库连接信息。在 MongoDB 控制台 的实例详情页,获取以下信息:
连接要素 | 获取方式 | 说明 |
内网地址与端口 | 实例详情 > 网络配置 | 格式为 IP:27017,副本集实例提供多个 IP |
用户名 | 默认用户 mongouser,或在数据库管理页面创建 | 控制台创建的用户统一使用 admin 作为认证库 |
密码 | 创建实例时设置 | 如包含 @、:、/ 等特殊字符,需进行 URL 编码转义 |
认证数据库 | 固定为 admin | URI 中必须指定 authSource=admin |
连接 URI 格式
云数据库 MongoDB 支持标准的 MongoDB URI 连接串格式:
// 副本集实例mongodb://mongouser:<password>@<IP1>:27017,<IP2>:27017,<IP3>:27017/<database>?authSource=admin&replicaSet=<replicaSetName>// 分片集群实例(连接 mongos 节点):mongodb://mongouser:<password>@<mongosIP1>:27017,<mongosIP2>:27017/<database>?authSource=admin
说明:
推荐使用副本集连接串(包含多个 IP),驱动可自动完成故障切换,提升可用性。更多信息,请参见 连接与安全规范。
如需读写分离,可在 URI 中添加
readPreference=secondaryPreferred 参数,优先从从节点读取数据。密码中的特殊字符(如
@、:、/、%)需进行 URL 编码,例如 @ 编码为 %40。支持的语言驱动
云数据库 MongoDB 支持所有兼容 MongoDB 协议的官方驱动和社区驱动。以下为各语言的连接示例和推荐驱动版本:
语言/工具 | 推荐驱动 | 推荐版本 | 连接示例 | 适用场景 |
Java | MongoDB Java Driver | 4.9或以上 | 企业级后端应用、Spring 生态集成 | |
Python | PyMongo | 4.6或以上 | 数据分析、Web 后端、脚本自动化 | |
Go | MongoDB Go Driver | 1.13或以上 | 高并发后端服务、微服务架构 | |
Node.js | MongoDB Node.js Driver | 6.0或以上 | Web 后端服务、Serverless 应用 | |
PHP | MongoDB PHP Library | 1.17或以上 | Web 应用开发 |
说明:
以上推荐版本为截至本文更新时的建议版本,驱动版本应与您使用的 MongoDB 实例版本兼容。各版本驱动的兼容性详情,请参见 MongoDB 官方驱动兼容性矩阵。
如使用其他语言(如 C#、Ruby、Rust 等),请参见 MongoDB 官方驱动列表,连接方式与上述示例类似,核心要点为指定
authSource=admin 认证库。认证方式
云数据库 MongoDB 支持以下认证方式:
说明:
早期实例可能存在默认用户
rwuser,使用 MONGODB-CR 认证方式。该认证方式已不推荐使用,如您的实例存在 rwuser 用户,建议迁移至 mongouser 或新建用户。认证方式 | 适用用户 | 说明 |
SCRAM-SHA-1 | mongouser 及控制台创建的所有用户 | 兼容所有版本的默认认证方式,客户端无需额外指定 authMechanism 参数。 |
SCRAM-SHA-256 | 控制台创建的用户(MongoDB 4.0及以上版本) | 安全性更高的认证方式,4.0+客户端驱动会自动优先协商使用;若需强制使用,需在连接串中显式指定 authMechanism=SCRAM-SHA-256。 |
连接池配置建议
生产环境中,建议配置连接池以复用数据库连接,避免频繁创建和销毁连接带来的性能开销。以下为通用配置建议:
参数 | 建议值 | 说明 |
maxPoolSize | 50 - 200 | 连接池上限,根据应用并发量和实例规格调整。建议不超过实例最大连接数的80% |
minPoolSize | 5 - 20 | 连接池下限,保持一定数量的空闲连接,减少冷启动延迟 |
connectTimeoutMS | 10000 | 连接超时时间(毫秒),内网环境下10秒足够 |
socketTimeoutMS | 30000 | 套接字超时时间(毫秒),根据业务查询复杂度调整 |
maxIdleTimeMS | 60000 | 空闲连接最大存活时间(毫秒),避免长时间闲置被服务端断开 |
retryWrites | true | 启用可重试写入,提升网络抖动场景下的写入可靠性 |
retryReads | true | 启用可重试读取,提升读取可靠性 |
w | majority | 写入关注级别,确保数据写入多数节点后再返回确认 |
常见问题
驱动版本如何选择?
驱动版本需与 MongoDB 实例版本兼容。选择不当可能导致连接失败或功能异常。请参考以下原则:
1. 优先使用推荐版本:各语言的推荐驱动版本已在上方支持的语言驱动 表格中列出,这些版本经过验证可正常连接云数据库 MongoDB。
2. 查看兼容性矩阵:如需使用其他版本,请参见 MongoDB 官方驱动兼容性矩阵,确认该驱动版本支持您的 MongoDB 实例版本。
3. 避免使用已停维的驱动:以下驱动已停止维护,请迁移至对应的替代驱动:
已停维驱动 | 替代驱动 |
mongo-java-driver(Java 3.x) | mongodb-driver-sync(4.x 及以上) |
mgo(Go 社区驱动) | go.mongodb.org/mongo-driver(官方驱动) |
PyMongo 3.x | PyMongo 4.x |
连接超时或响应缓慢如何处理?
连接超时或响应缓慢通常由网络延迟、连接池配置不当或查询性能问题引起。请按以下步骤排查:
1. 检查网络延迟:在 CVM 上执行以下命令,确认到 MongoDB 实例的网络延迟。内网正常延迟应在1ms以内。如延迟过高,请检查 CVM 和 MongoDB 实例是否在同一可用区。
telnet 实例访问IP地址 端口
2. 检查连接池配置:连接池配置不当可能导致连接等待超时。请参考上方 连接池配置建议 调整参数,确保
maxPoolSize 与业务并发量匹配。3. 检查慢查询:登录 MongoDB 控制台,在实例管理页面选择数据库管理 > 慢日志查询,查看是否存在执行时间过长的查询。如存在慢查询,请优化查询条件或添加索引。