2
我有一個集合'匹配'內有727000個文檔。它裏面有6個字段,沒有數組只是簡單的整數和對象ID。我正在查詢收集如下:Mongodb toArray()性能
matches.find({
$or: [{
homeTeamId: getObjectId(teamId)
}, {
awayTeamId: getObjectId(teamId)
}
],
season: season,
seasonDate: {
'$gt': dayMin,
'$lt': dayMax
}
}).sort({
seasonDate: 1
}).toArray(function (e, res) {
callback(res);
});
結果只返回大約7-8個文件。 查詢需要約100ms,我認爲這是相當合理的,但主要問題是,當我調用方法toArray()時,它增加了約〜600ms! 我正在我的筆記本電腦上運行服務器,Intel Core I5,6GB RAM,但我無法相信它會爲7-8文檔添加600ms。 嘗試使用mongodb本機驅動程序,現在切換到mongoskin,並獲得同樣緩慢的結果。 有什麼建議嗎?
是什麼'回調()'做什麼? – bdesham 2013-04-08 21:28:16
它從函數返回數據。我在函數exports.getPrevNextMatches = function(teamId,callback){}中封裝了這個查詢。但是當我做同樣沒有toArray()方法時,要返回結果的遊標,它需要提到〜100毫秒。 toArray()方法增加〜600ms – Dove 2013-04-08 21:31:34
你是否在'find'結果而不是'toArray'上嘗試'forEach'?我懷疑這會有所幫助,但這是一件容易的事情。另外,'explain'給你的查詢是什麼? – WiredPrairie 2013-04-09 00:32:25