【问题标题】:Mongodb query slow response timemongodb查询响应时间慢
【发布时间】:2015-05-31 20:05:24
【问题描述】:

我正在开发一个使用灵活模式的项目。我已经设置了一个本地 mongodb 服务器并在节点内使用 mongoose。

遇到一个有趣的扩展问题,想知道这些响应时间是否正常。如果查询返回 50 个文档,我需要 5-10 秒让 mongo 响应。在同一个集合中,返回 2 个文档的查询是毫秒。

这不是一个缓慢的连接,因为它是本地的,想知道是否有人知道导致这种情况的原因。

我使用的是 OS X 和 mongo 3.0.1

编辑:目前文档几乎是空的,只有一两个属性。

编辑:文档的总数并不重要,只是返回的大小。如果有 51 个文档,50 个像 {_id: "...", _schema:"bar"} 和 1 个 {_id:"...", _schema: "foobar" },那么 collection.find({_schema:"bar"}) 需要几秒钟,collection.find({_schema:"foobar"}) 不需要时间。

解释输出:

"queryPlanner" : {
    "plannerVersion" : 1,
    "namespace" : "mean-dev.documentmodels",
    "indexFilterSet" : false,
    "parsedQuery" : {
        "$and" : [ ]
    },
    "winningPlan" : {
        "stage" : "COLLSCAN",
        "filter" : {
            "$and" : [ ]
        },
        "direction" : "forward"
    },
    "rejectedPlans" : [ ]
},
"serverInfo" : {
    "host" : "Sams-MBP.local",
    "port" : 27017,
    "version" : "3.0.1",
    "gitVersion" : "nogitversion"
},
"ok" : 1

【问题讨论】:

  • 没有任何其他信息,我看不出这是如何回答的。不过好像不太正常。

标签: node.js mongodb response-time


【解决方案1】:

不,不应该花那么多时间。

问题可能在于查询中的操作(投影、排序、地理搜索、分组等)。解决这个问题的最佳方法是创建索引来加速此类查询。

要在 _schema 字段上创建索引,请在 mongodb 中执行该命令:

db.collection.ensureIndex({"_schema":1});

【讨论】:

    猜你喜欢
    • 2020-06-25
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 2018-10-30
    • 2018-08-18
    • 2017-01-18
    相关资源
    最近更新 更多