Mongodb查询响应时间慢

时间:2015-05-31 20:05:25

标签: node.js mongodb response-time

我正在开发一个使用灵活模式的项目。我已经设置了一个本地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

1 个答案:

答案 0 :(得分:0)

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

问题可能出在你的查询中的操作(投影,排序,geosearch,分组等)。解决这个问题的最佳方法是创建一个索引来加速这种查询。

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

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