我正在通过 node 中的Mongoose与MongoDB建立单一连接.js Express应用程序:

var express = require('express');
var mongoose = require('mongoose');
mongoose.connect('localhost', 'test');

然后我定义模式,然后是模型,最后是从数据库中提取所有用户的控制器:

app.get('/users', function (req, res) {
  return User.find(function (err, users) {
    if (!err) {
      return res.send(users);
    }
  });
});

这些数据库连接在应用程序启动期间打开,并在 node 运行期间保持打开状态.js应用程序.

困扰我的是为什么我有5个连接打开?只要我关闭 node .js应用程序,所有5个连接都已关闭.

Related note:对于REST API服务器,最好始终打开MongoDB连接.还是根据每个用户请求手动打开/关闭连接更好?

推荐答案

这是因为Mongoose使用一个由5个连接组成的池(默认情况下),这些连接在整个应用程序中共享.为了获得最佳性能,最好让它们保持打开状态.

可以通过选项参数将默认行为更改为mongoose.connect.例如:

mongoose.connect('localhost', 'test', { server: { poolSize: 3 }}); // Use 3 connections

Mongodb相关问答推荐

筛选出嵌套数组中的记录Mongo DB聚合

如何在Mongo中制作全覆盖索引

MongoDB - 家庭作业(job)帮助.不确定如何在 mongodb 中访问文档中的变量

分页时根据唯一字段mongodb获取数据

没有mongoose 的 Express 和 MongoDB

如果 mongoDB 服务器正在运行,如何从驱动程序判断

MongoDB:在集合上设置 TTL 索引时出错: sessions

在 MongoDB 中按条件分组

java.lang.IncompatibleClassChangeError:Implementing class Mongo

Django admin 和 MongoDB,可能吗?

单个模式数组中的多个模式引用 - mongoose

遍历所有 Mongo 数据库

为什么我新创建的 mongodb 本地数据库增长到 24GB?

在安装的 MongoDB homebrew 中设置 dbpath (Mac OS)

没有参考选项的mongoose填充字段

MongoDB:查询和检索嵌入式数组中的对象?

Mongoose 版本控制:when is it safe to disable it?

如何在mongoDB中检索其值以特定字符结尾的文档

mongodb安装失败运行mongod

Hadoop Map/Reduce 与内置 Map/Reduce