当前位置: 首页 > 面试题库 >

持续打开MongoDB数据库连接

丌官霖
2023-03-14
问题内容

在许多使用MongoDB的入门示例中,您将看到类似以下的代码:

var MongoClient = require('mongodb').MongoClient;
MongoClient.connect("mongodb://localhost:port/adatabase", function(err, db)
{
    /* Some operation... CRUD, etc. */
    db.close();
});

如果MongoDB与任何其他数据库系统一样,open并且close操作通常在时间上很昂贵。

所以,我的问题是这样的:只需执行MongoClient.connect("...一次,将返回db值分配给某个全局模块即可,模块中具有各种功能就可以进行各种与数据库相关的工作(将文档插入集合,更新文档等)。
),然后由应用程序的其他部分调用它们(从而重新使用该db值),然后,在应用程序完成后,才执行close

换句话说,openclose不是每次你需要去和做一些与数据库相关的操作-
一旦完成。并且,当实际完成所有与数据库相关的工作时,您将继续使用db在初始期间返回的对象open\connect直到最后才使用处置该对象close

显然,由于所有I /
O都是异步的,因此在close发出之前,请确保已完成最后一个数据库操作close。似乎这样应该可以,但我想仔细检查一下,以防万一我刚接触MongoDB时遗漏了一些东西。谢谢!


问题答案:

是的,这是正常现象。启动您的应用程序,连接到数据库,对数据库执行长时间的操作,如果连接意外中断,则可能重新连接,然后再也不要关闭连接(仅依赖于进程终止时发生的自动关闭)



 类似资料:
  • 我遇到了这个问题:对于Vaadin7,我已经配置了我的持久性。xml,下面是代码 http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd“version=“2.0” 当我创建一个新的JPA容器并将其绑定到一个表时,我会在MSSQL活动监视器上看到我的新连接,但如果会话超时或注销,我仍然会在SQL上看到连接。 如果我在应用程序中重新登录,

  • 我有一个grails应用程序,它使用quartz每20秒循环一次域类。 每次执行quartz作业时,都会与Mongo建立另一个连接。由于某种原因,前几次没有关闭,因此在11次连接后,作业停止工作(连接超时)。我尝试了另一种方法,通过在操作中调用服务方法来调用URL,但连接数仍在不断增加。当我在没有运行Quartz作业的情况下反复调用URL时,只会创建4个新连接,不再有。 你知道怎么做吗? Grai

  • 在操作 MongoDB 数据库之前我们需要先连接数据库,您可以使用 MongoDB shell 来连接 MongoDB,也可以使用 PHP、Java 等编程语言来连接 MongoDB,本节我们主要介绍一下使用 MongoDB shell 来连接 MongoDB。 在连接 MongoDB 之前,我们需要先启动 MongoDB,启动 MongoDB 的方式非常简单,您只需要在 MongoDB 安装目录

  • 问题内容: 我目前正在以内存模式测试H2 DB。我建立了一个连接 我想使用dbunit进行一些导入并设置dbUnits db连接 还有我想稍后查询的导入 所以我的问题是,在内存模式下,什么时候可以关闭连接?通常我会做这样的事情 但是在内存中,如果连接关闭,我会丢失数据吗?那么在我结束程序之前,它应该保持打开状态吗? 问题答案: 从H2文档中: 默认情况下,关闭与数据库的最后一个连接会关闭数据库。对

  • 问题内容: 我有一个bukkit插件(minecraft),需要连接到数据库。 数据库连接应该一直保持打开状态,还是在需要时打开和关闭? 问题答案: 数据库连接仅在需要时才打开,并在完成所有必要的工作后关闭。代码示例: 在Java 7之前: try { con = … //retrieve the database connection //do your work… } catch (SQLEx

  • 我有一个bukkit插件(minecraft),需要连接到数据库。 数据库连接应该一直保持打开状态,还是在需要时打开和关闭?