AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。

$ サンプル (集計ステージ)

$sample

入力ドキュメントから指定された数のドキュメントをランダムに選択します。

$sample ステージ構文:

{ $sample: { size: <positive integer N> } }

N は、ランダムに選択するドキュメントの数です。 N を 1 以上の整数に設定します。

次の条件が すべて 当てはまる場合、 $sampleは疑似ランダム カーソルを使用してNドキュメントを選択します。

  • $sample は、パイプラインの第一ステージです。

  • N は、コレクション内の全ドキュメントの 5% 未満です。

    注意

    $sample がコレクション全体をスキャンする時期を決定するために使用するしきい値は構成できません。しきい値は 5%です。サイズがコレクション内のドキュメント総数の 5%を超える場合、$sample は、生成されたランダム値によって top-k ソートを実行します。サンプルドキュメントが 100 MB を超える場合、top-k ソートがディスクにスピルする可能性があります。

  • このコレクションには 100 を超えるドキュメントが含まれています。

以前の条件のいずれかが false の場合、 $sampleは次のようになります。

  • 先行する集計ステージまたはコレクション スキャンから出力されるすべてのドキュメントを読み取ります。

  • ランダムな並べ替えを実行して、 Nドキュメントを選択します。 ランダムソートには、ソートメモリ制限 が適用されます。

    注意

    ビューは、 集計パイプライン の結果です。 ビューで$sampleを使用すると、MongoDB は ステージをビューの集計パイプライン構文の末尾に追加します。 したがって、ビューの$sampleステージは最初のステージではなく、常にコレクションスキャンが行われます。

シャーディングされたクラスターで $sample を使用すると、各シャードは個別にサンプル操作を実行します。mongos は、各シャードのサンプル操作をマージした結果をサンプリングし、要求された数のドキュメントを返します。

以下の例では、sample_mflix サンプル データセットの movies コレクションを使用します。このデータセットを配置にロードする方法について詳しくは、「サンプル データセットのロード」を参照してください。

次の集計操作は、movies コレクションから 3 ドキュメントをランダムに選択します。

db.movies.aggregate( [ { $sample: { size: 3 } }, { $project: { _id: 0, title: 1, year: 1, genres: 1 } } ])

この操作は、3 つのランダムなドキュメントを返します。

このページを評価

項目一覧