私はそれに約500000個のデータセットを持つコレクションを持っており、その中からランダムなデータセットを見つけるのが好きです。 find()をcustomer-idに制限することができます。これにより、サイズが約80000セットに縮小されます。また、顧客IDに指標が追加されます。MongoDBランダムデータセットのパフォーマンスを見つけよう
私は、ランダムなデータセットを取得するには、次のコマンドを使用してPHPで:
$mongoCursor = $mongoCollection->find($arrQuery, $arrFields)->skip(rand(1, $dataCount));
プロファイラは今、伝え:
DB.Collection ntoskip:3224 nscanned:3326 nreturned:101 reslen:77979 262ms
これは、結果を取得するためにかなりの時間を要します。 データを取得するより良い方法はありますか?
PHPですべてのIDを取得した後、ランダムに1つのIDを取得し、このIDの完全なセットを見つけることを考えました。しかし、私はPHPで非常に多くのデータを取得することについて心配しています。
ありがとうございました。 Dan
* *一度のための十分な需要があるより良い方法かもしれない...(HTTPS [コレクションからランダムにアイテムを取得するための機能要求]はあります。 mongodb。org/browse/SERVER-533)をMongoDBチケットトラッカーに追加します。ネイティブに実装されている場合は、最も効率的なオプションになる可能性があります。 (機能が必要な場合は、それを投票してください) –
この質問は、ここでスタックオーバーフローの多くのフォームで要求されています。最も一般的な質問は[MongoDBのランダムレコード](http://stackoverflow.com/questions/2824157/random-record-from-mongodb)です。これは良い回答です。しかし、私は、この問題についての最善の考え方は、ランダムな文書を1つ取得することを考えるのではなく、むしろ結果セットをランダム化することだと思います。それについては、[Mongoでランダムに結果セットを注文する](http://stackoverflow.com/questions/8500266/ordering-a-result-set-randomly-in-mongo)を参照してください。 –