名前、著者、価格、出版社などの本のメタデータをmongodbドキュメントに保存しています。私はこれらのドキュメントを約1,000万個持っており、それらはすべて1つのコレクションに含まれています。ドキュメントの平均サイズは1.9KBです。name
今、私は、、authors
およびにインデックスを持っていますprice
。実際、私は価格に2つのインデックスを持っています。1つは昇順で、もう1つは降順です。私のmongodbバージョンは2.2.0で、phpドライバーを使用してmongoにクエリを実行しています。ドライバーのバージョンは1.12です。しかし、価格について範囲クエリを実行すると、が表示されますMongoCursorTimeoutException
。私のクエリでは、「価格が1000未満で500を超える」などの特定の価格帯の本を見つけようとしています。
タイムアウトを増やすのは良い考えではないようです(すでに30秒です)。クエリプロセスを高速化するために他にできることはありますか?
編集
実際に私の物価指数は複合です。整数値のステータスフィールドがあるので、価格インデックスは次のよう{price:-1,status:1}
になり{price:1,status:1}
ます。また、PHPを使用して一度に20個のドキュメントを取得しようとしています。