创建 MongoClient
Overview
要连接到 MongoDB 部署,您需要满足两个条件:
连接 URI(也称为连接字符串),用于告知 Node.js 驾驶员要连接到哪个 MongoDB 部署。
MongoClient对象,该对象创建与MongoDB 部署的连接并对其执行操作。
您还可以使用 MongoClientOptions
自定义 Node.js驾驶员在连接到MongoDB时的行为方式。
本指南向您介绍如何创建连接string并使用 MongoClient
对象连接到MongoDB 。
连接 URI
标准连接string包括以下组件:
组件 | 说明 |
---|---|
| 必需。将其标识为标准连接格式中字符串的前缀。 |
| 可选。身份验证凭证。如果包含这些内容,客户端将根据 |
| 必需。 运行 MongoDB 的主机和可选端口号。 如果不包含端口号,驱动程序将使用默认端口 |
| 可选。如果连接字符串包含 |
| 可选。 一个查询string ,它将特定于连接的选项指定为 |
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 页面。
防止慢速操作延迟其他操作
当您使用同一 MongoClient
实例同时运行多个MongoDB操作时,缓慢的操作可能会导致其他操作延迟。慢速操作会占用与MongoDB的连接,这可能会导致其他操作等待另一个连接可用。
如果怀疑是缓慢的 MongoDB 操作导致了延迟,可以使用以下方法检查所有进行中操作的性能:
在部署中启用数据库分析器。 要了解更多信息,请参阅 手册中的 数据库分析器 MongoDB Server。
运行
db.currentOp()
MongoDB Shell 命令。如需了解更多信息,请参阅“服务器手册”中的 db.currentOp() 文档。启用连接池监控。要学习;了解更多信息,请参阅连接池事件。
确定哪些操作导致延迟后,请尝试提高这些操作的性能。 阅读《MongoDB 性能最佳实践指南》,了解可能的解决方案。
若在实施性能最佳实践后仍出现延迟,则可修改连接设置以增大连接池大小。连接池是指驱动程序随时进行维护的与服务器的一组连接。
要指定连接池的最大大小,可以在 MongoClient
实例的连接选项中设置 maxPoolSize
选项。maxPoolSize
的默认值为 100
。如果正在使用的服务器连接数达到 maxPoolSize
,则发送到服务器的下一个操作将暂停,直到与驱动程序的连接可用。以下代码在创建新的 MongoClient
时将 maxPoolSize
设置为 150
:
const client = new MongoClient(uri, { maxPoolSize: 150 });
提示
要学习;了解有关连接池化的更多信息,请参阅“连接池概述”页面中的“连接池”部分。
API 文档
有关使用 Node.js驾驶员创建 MongoClient
对象的更多信息,请参阅以下API文档: