2017-10-21 54 views
0

我在MongoDB中是新的,我面临的一个问题,
我已经数以百万计的文件在我的收藏
中,我试图找到使用findOne({})命令
单一入口当我试图找到最近的条目,然后响应来自以毫秒为单位
,但是当我试图约600万个文件获取旧条目然后在蒙戈外壳
大约需要2分钟,我的节点服务器为MongoDB中花费过多时间用于旧条目

{ MongoErro : connection 1 to 127.0.0.1:27017 timed out } 

我的nodejs服务器发送一个空的响应。
任何一个可以告诉我,我应该怎么做才能解决这个问题提前

解释
谢谢你给了我

db.contacts.find({"phoneNumber":"9165900137"}).explain("executionStats") 
{ 
     "queryPlanner" : { 
       "plannerVersion" : 1, 
       "namespace" : "meanApp.contacts", 
       "indexFilterSet" : false, 
       "parsedQuery" : { 
         "phoneNumber" : { 
           "$eq" : "9165900137" 
         } 
       }, 
       "winningPlan" : { 
         "stage" : "COLLSCAN", 
         "filter" : { 
           "phoneNumber" : { 
             "$eq" : "9165900137" 
           } 
         }, 
         "direction" : "forward" 
       }, 
       "rejectedPlans" : [ ] 
     }, 
     "executionStats" : { 
       "executionSuccess" : true, 
       "nReturned" : 1, 
       "executionTimeMillis" : 321188, 
       "totalKeysExamined" : 0, 
       "totalDocsExamined" : 495587806, 
       "executionStages" : { 
         "stage" : "COLLSCAN", 
         "filter" : { 
           "phoneNumber" : { 
             "$eq" : "9165900137" 
           } 
         }, 
         "nReturned" : 1, 
         "executionTimeMillisEstimate" : 295230, 
         "works" : 495587808, 
         "advanced" : 1, 
         "needTime" : 495587806, 
         "needYield" : 0, 
         "saveState" : 3871779, 
         "restoreState" : 3871779, 
         "isEOF" : 1, 
         "invalidates" : 0, 
         "direction" : "forward", 
         "docsExamined" : 495587806 
       } 
     }, 
     "serverInfo" : { 
       "host" : "li1025-15.members.linode.com", 
       "port" : 27017, 
       "version" : "3.2.16", 
       "gitVersion" : "056bf45128114e44c5358c7a8776fb582363e094" 
     }, 
     "ok" : 1 
} 
+0

您需要提供详细信息,例如您的查询,您的索引,您已经运行过的'explain'的结果,SO在这里的模糊程度如何不够有帮助等。 –

+0

投票表达此问题使得无感觉 - 这相当于说“为什么我的程序不工作”,而不是别的。这里没有任何信息可以帮助我们在这里和网络上寻找典型和重复的“我如何快速制作芒果”问题。可能没有理由downvote,但肯定是不赞成的原因。 –

+0

和你的指数? '解释'结果?等等 –

回答

0

正如在解释计划结果表明,目前的查询正在进行收集扫描。这意味着它必须扫描集合中的每个文档以产生匹配,并且您已获得大约五亿个文档。

尝试添加此索引,它可能需要一点创建它。

db.contacts.createIndex({电话号码:1},{背景:真})

运行一次查询索引创建成功,你必须看到性能的显着改善。为了确定索引是否被拾取,请再次解释,并且不应再说COLLSCAN。

+0

对提供的答案有任何问题或意见?否则,请接受答案(小勾号) – dilsingi