连接指南
本指南向您展示如何使用 Node.js 驱动程序连接到 MongoDB Atlas 部署、MongoDB 实例或副本集。
连接 URI
连接 URI 是驱动程序用来连接 MongoDB 部署的指令集。该指令集指示驱动程序应如何连接到 MongoDB,以及在连接时应如何运行。下面的示例显示了连接 URI 的各个部分:
在此示例中,我们连接到具有 DNS SRV 记录的 Atlas MongoDB 部署。有关详细信息,请参阅 DNS 种子列表连接格式文档。这种格式提供了部署灵活性以及轮换更改服务器而无需重新配置客户端的能力。
注意
要了解如何在 Atlas 中检索连接字符串,请参阅 Atlas 驱动程序连接指南。
如果您要连接到没有 DNS SRV 地址的实例或副本集,则必须为协议使用 mongodb
,该协议指定了标准连接字符串格式。
在协议之后,如果使用基于密码的身份验证,连接字符串的下一部分包含档案。将 user
的值替换为您的用户名,将 pass
替换为您的密码。如果使用的是不需要用户名和密码的身份验证机制,请省略连接 URI 中的这一部分。
连接字符串的下一部分指定 MongoDB 实例的主机名或 IP 地址,后跟端口号。在上面的示例中,我们使用 sample.host
作为主机名,使用 27017
作为端口。将这些值替换为您的 MongoDB 实例。
连接字符串的最后部分包含作为参数的连接和身份验证选项。在上面的示例中,我们设置了两个连接选项:maxPoolSize=20
和 w=majority
。有关连接选项的更多信息,请跳至 连接选项部分。
Atlas 连接示例
您必须创建一个客户端来连接到 Atlas 上的 MongoDB 部署。要创建客户端,请构造一个 MongoClient
实例,并传入 URI 和 MongoClientOptions
对象。
提示
客户端重用
由于每个 MongoClient
代表一个数据库连接池,因此大多数应用程序只需要一个 MongoClient
实例,甚至在多个请求中也是如此。要详细了解连接池在驱动程序中的工作原理,请参阅常见问题解答页面。
使用 MongoClientOptions
对象中的 serverApi
选项可启用 Stable API 功能,这会强制服务器运行其中行为与指定 API 版本兼容的操作。
以下代码展示了在连接到 Atlas 上的 MongoDB 部署时,如何指定连接字符串和 Stable API 客户端选项,并检查连接是否成功:
const { MongoClient, ServerApiVersion } = require("mongodb"); // Replace the placeholder with your Atlas connection string const uri = "<connection string>"; // Create a MongoClient with a MongoClientOptions object to set the Stable API version const client = new MongoClient(uri, { serverApi: { version: ServerApiVersion.v1, strict: true, deprecationErrors: true, } } ); async function run() { try { // Connect the client to the server (optional starting in v4.7) await client.connect(); // Send a ping to confirm a successful connection await client.db("admin").command({ ping: 1 }); console.log("Pinged your deployment. You successfully connected to MongoDB!"); } finally { // Ensures that the client will close when you finish/error await client.close(); } } run().catch(console.dir);
注意
使用客户端对 MongoDB 部署执行 CRUD 操作时,Node.js 驱动程序会自动调用 MongoClient.connect()
方法。如果要验证连接是否成功,请显式调用 MongoClient.connect()
方法。
要了解有关 Stable API 功能的更多信息,请参阅 Stable API 页面。
连接 MongoDB 的其他方式
如果要连接到未托管在 Atlas 上的单个 MongoDB 服务器实例或副本集,请参阅以下部分了解如何连接。
连接到本地计算机上的 MongoDB Server
要连接到本地计算机上的 MongoDB 部署,请完成以下步骤:
下载 MongoDB Server Community 或 Enterprise 版本。
安装并配置 MongoDB Server。
启动该服务器。
重要
务必保护您的 MongoDB 服务器免受恶意攻击。请参阅我们的安全检查清单,获取安全建议清单。
在成功启动 MongoDB 服务器后,在驱动程序连接代码中指定连接字符串。
如果您的 MongoDB Server 在本地运行,则可使用以下连接字符串:
mongodb://localhost:<port>
在此连接字符串中,<port>
为通过其将服务器配置为侦听传入连接的端口号。
如果想要指定其他主机名或 IP 地址,请参阅服务器手册中关于连接字符串的条目。
要测试能否连接到服务器,请替换并运行连接到 MongoDB 代码示例中的连接字符串。
连接到副本集
MongoDB 副本集部署是一组用于存储相同数据集的连接实例。这种实例配置提供了数据冗余和高数据可用性。
要连接到副本集部署,请指定每个实例的主机名和端口号(以逗号分隔),并将副本集名称指定为连接字符串中 replicaSet
参数的值。
mongodb://host1:27017,host2:27017,host3:27017/?replicaSet=myRs
建立连接时,驱动程序默认采取以下操作:
在给定任一节点的地址时发现所有副本集节点。
将操作分派给相应的成员,如对主节点进行写入操作。
提示
指定所有主机
为了在有一台主机不可用的情况下保持连接畅通,请在连接副本集时提供完整的主机列表。
DirectConnection
要强制操作以在连接 URI 中指定的主机上运行,您可以指定directConnection
连接选项。如果指定此选项,则必须使用标准连接 URI 格式。当您指定此选项时,驱动程序不接受 DNS 种子列表连接格式 (SRV)。
当您指定 directConnection
并连接到副本集的从节点成员时,您的写入操作将失败,因为客户端未连接到主节点成员。要执行读取操作,必须启用从节点读取。有关更多信息,请参阅读取偏好选项。