0
mongoDBを単純なapiのパーティとして照会する際に以下を使用します。mongo/nodeのタイムアウトエラーを回避する
function queryDB(db,path,request,response){
var collection = db.collection('workingCaseDB');
collection.findOne({name:query}, function (err,result) {
if(err)
sendError(db,err,request,response);
else
displayResults(db,result,request,response);
});
}
結果が見つからない場合、これはしばらくストールしてタイムアウトエラーをスローします。データベースに結果がない場合、これをより正常に失敗させるために何ができますか?つまり、結果が見つかるたびにクエリは3秒かかるが、結果が見つからない場合は、タイムアウトするまでに10秒かかり、エラーがスローされます。これを3秒間にどのように切ることができますか?
結果がないということは、コレクション全体をチェックする必要があり、10秒かかることを意味します。 'findOne'が最初の一致を返します。最初の一致がチェックされるデータの上位30%に見つかった場合、それは<= 3秒を要します。チェックされるデータの下部30%に見つかる場合は、6秒を超えます。 スピードアップするためには、クエリの分かりやすいインデックスを作成する必要があります。 – pintxo
あなたのクエリで何を使用しても、それを適切にインデックス化しようとすると、それは飛ぶでしょう... – abeyaz