sql >> データベース >  >> NoSQL >> MongoDB

大きく歪んだ結果を返すMongoDBからのランダムサンプル

    MongoDB 3.4.9の時点で、観察されたバイアスの理由の一部は、$sampleであるということです。 ストレージエンジンのランダムカーソルの実装にほぼ完全に依存しています( SERVER-19183 を参照) )。これは、$sampleが実行されるように行われます。 コレクションに大量のデータが含まれている場合は、パフォーマンスが向上する可能性があります。ただし、ストレージエンジンは、Bツリータイプの実装を使用して並べ替えられた順序でドキュメントを保存するため、真にランダムな結果を作成できるとは限りません。

    現在、より良い$sampleを求める2つの機能リクエストがあります メカニズム、つまり SERVER-22069 および SERVER-22068 。

    そうは言っても、データの真に偏りのないサンプルが必要な場合は、独自の$sampleをローリングします。 のような解決策は、この時点で進めるための最良の方法である可能性があります。次のようなもの:

    1. すべての_idのリストを取得する コレクションにあります。
    2. このリストでランダムサンプリングを実行します(たとえば、Pythonのrandomを使用します.choice
    3. サンプリングされた_idを使用して、関連するすべてのドキュメントを取得します 、_idなので、必要なサンプルサイズに応じて適度にパフォーマンスが向上します。 常にインデックスが付けられます。



    1. MongoDBで同様の配列をクエリします

    2. Mongoidの埋め込みドキュメントからフィールドを除外するにはどうすればよいですか?

    3. MongoClient接続タイムアウトを設定するにはどうすればよいですか?

    4. mongodbで2つの日付の時間差を見つける方法