2017-10-21 94 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