【问题标题】:MongoDB query fast in mongo shell but slow/times out in nodejsMongoDB 在 mongo shell 中查询速度很快,但在 nodejs 中很慢/超时
【发布时间】:2022-02-15 19:03:30
【问题描述】:

以下查询在 mongo shell 中大约需要 54 毫秒,但在 nodejs 驱动程序中在一分钟后超时:

db.posts.find(
  {
    parentId: 10,
    modifiedGmt: {
      "$gte": new Date("2017-01-01T00:00:00.000z")
    },
    postType: {
      "$in": ["type1", "type2"]
    }
  },
  {
    _id: 1,
    parentId: 1,
    postId: 1,
    url: 1,
    modifiedGmt: 1,
    authors: 1,
    taxonomy: 1,
    postType: 1
  }
).sort({modifiedGmt: 1}).limit(2400)

解释表明查询正在使用现有索引。如果我将限制降低到 10 之类的非常低的值,它不会超时,但会花费很长时间。我真的不知道该去哪里。这是一个很大的集合,但是索引到位并且限制低于 10000,我不明白为什么它会这么慢。

有什么想法吗?

【问题讨论】:

  • 您需要在问题帖子中包含更多详细信息 - 解释结果、集合中的文档数量、创建的索引以及包含相关字段的示例文档。

标签: node.js mongodb


【解决方案1】:

我怀疑.sort 无法使用您的索引。

我建议您阅读此页面sort-operator-and-performance

【讨论】:

  • 原来我的代码中的排序在字段名称中有错字,所以我在一个不存在的字段上进行排序。当我去添加一个额外的字段以查看更好地匹配索引时,我想通了。谢谢!
猜你喜欢
  • 1970-01-01
  • 2016-06-28
  • 2011-11-30
  • 1970-01-01
  • 2021-11-04
  • 2018-11-16
  • 2011-06-27
  • 1970-01-01
  • 2015-11-20
相关资源
最近更新 更多