2017-09-21 30 views
0

私はMongoDBでMongoDBを使用するアプリケーションを開発しています。 resultを与えるのに時間がかかるクエリがいくつかあります。私は$maxTimeMSがすべての検索クエリに対して最大時間を設定できることを知っていますが、集計メソッドのクエリ実行時間を設定または増やしたいと思います。アグリゲーションの最大実行タイムアウトを増やす方法

+0

おそらく、実際に「タイムアウト」する集計ステートメントがあることが懸念されます。おそらく、あなたがしようとしていることを示して、あなたが期待している結果を説明する必要があります。あなたは本当にそのようなことを「増やす」ことを本当に望むべきではありません。 –

+0

どの言語とライブラリを使用していますか?質問にそれを言いなさい。 –

+1

@NeilLunn集約操作がタイムアウトする可能性は非常に高いです。私が正しく覚えていれば、デフォルトの時間は30秒のようなもので、大量のデータセット、特にソートのような操作が含まれている場合は非常にすばやくそれを超えることがあります。 –

答えて

1

MongoDBの独自のノードドライバでは、aggregateメソッドでカーソルを使用することができます(これはデフォルトでは行いません)。カーソルを使用する場合は、maxTimeMSオプションを指定して、集計操作のタイムアウトを増減することもできます。 Documented here

はマングースで同じことを行うには、あなたのモデルの生のコレクションオブジェクトにアクセスする必要があります。しかし

YourModel.collection.aggregate([/* pipeline */], { 
    cursor: { 
    batchSize: /* an appropriate batch size */ 
    }, 
    maxTimeMS: 60000 
}); 

、長いMongoDBの上でこれを実行する操作は良いアイデアではありません、あなたが見なければならないので、あなたのパイプラインを最適化したり分解したりすることができます。コレクションに適切なインデックスが作成されていることを確認することもできます。

関連する問題