我正在开发一个使用灵活模式的项目。我已经设置了一个本地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
答案 0 :(得分:0)
不,它不应该花那么多时间。
问题可能出在你的查询中的操作(投影,排序,geosearch,分组等)。解决这个问题的最佳方法是创建一个索引来加速这种查询。
要在_schema
字段上创建索引,请在mongodb中执行该命令:
db.collection.ensureIndex({"_schema":1});