如何在 Node.js Web 应用程序中管理 MongoDB 连接?

2023-11-24

我正在使用节点 mongodb-native用MongoDB驱动写一个网站。

我对如何管理连接有一些疑问:

  1. 仅使用一个 MongoDB 连接来处理所有请求是否足够?是否存在任何性能问题?如果没有,我可以设置一个全局连接以在整个应用程序中使用吗?

  2. 如果不是,当请求到达时打开一个新连接,并在处理请求时关闭它,这样可以吗?打开和关闭连接的成本是否昂贵?

  3. 我应该使用全局连接池吗?我听说驱动程序有一个本机连接池。这是一个好的选择吗?

  4. 如果我使用连接池,应该使用多少个连接?

  5. 还有其他我应该注意的事情吗?


Node-mongodb-native 的主要提交者说:

当您的应用程序启动并重复使用时,您打开 do MongoClient.connect 一次 数据库对象。它不是每个 .connect 的单例连接池 创建一个新的连接池。

所以,直接回答你的问题,重用由此产生的数据库对象MongoClient.connect()。这为您提供了池化功能,与每个数据库操作上打开/关闭连接相比,速度将显着提高。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Node.js Web 应用程序中管理 MongoDB 连接? 的相关文章

随机推荐

  • 无法解决 PyCaret 的导入错误

    我试图通过在 anaconda python 3 8 中创建环境来安装 pycaret 一切都很好 除了当我试图从pycaret classification import 尽管我已经安装了所有依赖项 但我还是显示错误 ImportErro
  • 列出用户定义的变量,python

    我正在尝试迭代 python 脚本中设置的变量 我遇到了以下情况 枚举或列出 此处您最喜欢的语言 程序中的所有变量 在第一个例子中 us bin python foo1 Hello world foo2 bar foo3 1 a 2 b f
  • 使用命令和工厂设计模式来执行排队作业

    我有一个在数据库中排队的作业列表 我需要从数据库中读取这些作业并使用线程并行执行它们 并且我有一个命令类列表来执行每个作业 所有这些作业都实现了通用接口 命令模式 但是当我从数据库检索待处理的作业时 我需要为每个作业实例化正确的命令对象 如
  • 获取具有固定宽度的多行文本的高度以使对话框正确调整大小

    我想创建一个对话框 其中包含某种多行文本元素 JLabel JTextArea 等 并换行 我希望对话框具有固定宽度 但根据文本大小调整高度 我有这个代码 import static javax swing GroupLayout DEFA
  • LINQ 中的动态 where 条件

    我有一个场景 我必须在 LINQ 中使用动态 where 条件 我想要这样的东西 public void test bool flag from e in employee where e Field
  • 在 Objective-C 中创建整数属性数组

    我在 Objective C 中创建整数数组的属性时遇到问题 我不确定这是否可以在 Obj C 中做到 所以我希望有人可以帮助我找出如何正确地做到这一点或提供替代解决方案 myclass h interface myClass NSObje
  • 如何分析在生产服务器上运行的 ASP.NET 应用程序?

    我有一个 ASP NET 应用程序 在生产服务器上始终使用 75 100 的 CPU 如何分析应用程序以找出代码的哪一部分占用了最多的 CPU 我研究了几种不同的工具 Xte Profiler EQATEC dotTrace 但它们似乎都希
  • `filter(func)` 和 `filter(|x| func(x))` 有什么区别?

    有什么区别filter x func x and filter func 也许一个好的起点是了解如何filter func 可以使用类似于以下的语法来编写filter x func x 我的代码如下所示 fn filter out dupl
  • Application.Current.MainWindow.Close 与 Application.Current.Shutdown

    Should Application Current Shutdown 不作为关闭 WPF 应用程序的最佳实践吗 我有一个小型的多窗口应用程序 关闭 似乎对我的所有退出命令都很有效 但是 我被告知要始终使用Application Curre
  • 使用 Nodejs 的 Firebase 电话身份验证

    我查看了 firebase 的文档 但没有得到任何在服务器端通过电话验证用户身份的答案 我发现的只是 FIREBASEUI 或客户端身份验证 那么 我如何通过服务器端对用户进行身份验证 例如以表单形式向他们提供电话号码的输入 并在该表单上向
  • datetime_select 的值为零?

    当使用 作为 新 对象表单时 如何将选项设置为默认不选择日期而是选择 nil null 值 相关模型中的字段可以选择为空 但默认情况下 datetime select 控件没有空选项 我想你想要 f datetime select star
  • 简单的去抖动例程

    您是否有一个简单的去抖例程可以方便地处理单个开关输入 这是一个简单的裸机系统 没有任何操作系统 我想避免具有特定计数的循环构造 因为处理器速度可能会波动 我想你可以在这里学到很多东西 http www ganssle com debounc
  • 如何忽略数组解构中的某些返回值?

    当我只对索引 0 之外的数组值感兴趣时 在数组解构时是否可以避免声明无用的变量 在下文中 我想避免声明a 我只对索引 1 及以后感兴趣 How can I avoid declaring a const a b rest 1 2 3 4 5
  • 如何使用 Node.js 抓取包含动态内容的页面?

    我正在尝试刮一个website但我没有得到一些元素 因为这些元素是动态创建的 我在node js中使用cheerio 我的代码如下 var request require request var cheerio require cheeri
  • 如何在coldfusion中使用CFQuery执行2个或多个插入语句?

    是否可以使用执行 2 个插入或更新语句cfquery 如果是的话怎么办 如果不是 在 Coldfusion 中执行多个查询的最佳方法是什么 即仅打开一个到数据库的连接 我想每次我们打电话cfquery我们正在打开新的连接数据库 是否可以执行
  • Ember、Ember 数据和 MongoDB 的 _id

    我已经看到有人讨论过这个问题 但我仍然对处理 Mongo 的问题有疑问 id into id 我使用 mongoose 作为我的 ORM 虽然它有虚拟 但我似乎无法让它正常工作 以下是我的猫鼬模型中的内容 尝试从后端修复 mongoose
  • 如何在列表视图中实现OnScrollListener?

    我从服务器获取 500 条记录 我想在列表视图中显示 10 个项目 当列表视图到达末尾时我需要加载另外 10 个项目 依此类推 我在网上看到了很多例子 但我无法解决它 请帮助我 这是我的代码 public void onCreate Bun
  • C# 泛型继承和协变第 2 部分

    这是我的原始线程 C 泛型继承和协变 仅在我的只读界面上 我希望继承起作用 public delegate Boolean EnumerateItemsDelegate
  • 包包含同名的对象和包

    我在使用 Maven 或 Eclipse 编译一些 Scala 时遇到问题 我尝试从包含命名空间和同名类的 Java jar 导入一个类 我可以编译scalac 然而 例如 Java 项目 jar 包含 src foo bar java s
  • 如何在 Node.js Web 应用程序中管理 MongoDB 连接?

    我正在使用节点 mongodb native用MongoDB驱动写一个网站 我对如何管理连接有一些疑问 仅使用一个 MongoDB 连接来处理所有请求是否足够 是否存在任何性能问题 如果没有 我可以设置一个全局连接以在整个应用程序中使用吗