node.js - 保持打开 MongoDB 数据库连接

在这么多使用 MongoDB 的介绍性示例中,您会看到如下代码:

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

如果 MongoDB 与任何其他数据库系统一样,openclose 操作通常在时间方面是昂贵的。

所以,我的问题是:是否可以简单地执行 MongoClient.connect("... 一次,将返回的 db 值分配给某个模块全局,当应用程序的其他部分调用它们时,模块中的各种函数会执行各种与数据库相关的工作(将文档插入集合、更新文档等)(从而重用该 db 值),然后,当应用程序完成时,才执行 close

换句话说,openclose 只执行一次 - 不是每次您需要去执行一些与数据库相关的操作时。并且您继续重复使用在初始 open\connect 期间返回的 db 对象,只是在最后使用 close,当您真正完成所有与数据库相关的工作时。

显然,由于所有 I/O 都是异步的,因此在 close 之前,您需要确保在发出 close 之前完成最后一个数据库操作。看起来这应该没问题,但我想仔细检查以防万一我错过了一些东西,因为我是 MongoDB 的新手。谢谢!

最佳答案

是的,这是很好的典型行为。启动您的应用程序,连接到数据库,长时间对数据库执行操作,如果连接意外断开,则可能重新连接,然后永远不要关闭连接(仅依靠进程终止时发生的自动关闭) .

https://stackoverflow.com/questions/18650890/

相关文章:

MongoDB 通过 Mongoose JS - findByID 是什么?

python - 如何从 pymongo 发出 "show dbs"

mongodb - 在同一数据库中复制集合的最快方法是什么?

sql - MongoDB如何避免SQL注入(inject)困惑?

javascript - 如何使用对象 ID 数组创建 Mongoose 模式?

mongodb - MongoDB stats() 函数是否返回位或字节?

mongodb - 如何在 Mongoose 中查询不同的值?

c# - .NET MongoDB 连接的最佳实践?

javascript - 我可以确定一个字符串是否是 MongoDB ObjectID 吗?

mongodb - 查询 bool 字段为 "not true"(例如,错误或不存在)