【问题标题】:NodeJs mongoose performance slow when compared with mongo shell or robo3t performance与 mongo shell 或 robo3t 性能相比,NodeJs mongoose 性能较慢
【发布时间】:2019-11-28 05:33:07
【问题描述】:

我正在运行一个使用聚合打印大约 300 个结果的查询。

查询在 robo3t/mongo shell 中执行时非常快,但在 NodeJs 中使用 mongoose 时非常慢。

尝试寻找答案,登陆此 link 尝试设置 DBQuery.shellBatchSize = 500000; 但两个查询的黑白差异仍然在 7-8 秒左右

另外,将 mongoose 和 mongodb 版本更新到今天的最新版本。

这里是查询:

db.getCollection('fixed_activities').aggregate([
    {
      $lookup: {
        from: "city",
        localField: "activity_city",
        foreignField: "_id",
        as: "activity_location"
      }
    },
    {
      $lookup: {
        from: "rate_sheet_activity_prices",
        localField: "_id",
        foreignField: "act_id",
        as: "rate_sheets"
      }
    },
    {
      $lookup: {
        from: "organizations",
        localField: "rate_sheets.rate_sheet_id",
        foreignField: "rate_sheets.rate_sheet_id",
        as: "org_id"
      }
    },
    {
      $lookup: {
        from: "images",
        localField: "activity_image",
        foreignField: "_id",
        as: "activity_image"
      }
    },
    { $match: { org_id: { $exists: true, $not: { $size: 0 } } } }
  ])

【问题讨论】:

  • 让我们尝试在数据库上创建一些索引。
  • 我不认为这可以帮助减少服务器端查询的时间,因为节点上 mongo shell 和 mongo 的索引是相同的。或者,如果他们确实以不同的方式使用索引,那就另当别论了,但我认为情况并非如此。

标签: node.js mongodb mongoose


【解决方案1】:

我遇到了同样的问题,我的解决方案是从 mongoose 切换到 nodejs 中的本机 mongodb 控制器。

https://mongodb.github.io/node-mongodb-native/3.3/installation-guide/installation-guide/

【讨论】:

  • 会尽力让你知道
猜你喜欢
  • 2021-04-02
  • 1970-01-01
  • 2019-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-24
  • 2020-01-07
  • 2018-11-17
相关资源
最近更新 更多