Mongodb: ドキュメントのランダムなサンプルを選択する方法


次の構文を使用して、MongoDB のコレクションからドキュメントのランダムなサンプルを選択できます。

 db.myCollection.aggregate([ { $sample : { size: 4 } } ])

この特定の例では、 myCollectionという名前のコレクションから4 つのドキュメントのランダムなサンプルを選択します。

異なるサイズのランダム サンプルを選択するには、 size引数の値を変更するだけです。

次の例は、次の 7 つのドキュメントを持つ収集チームで実際にこの構文を使用する方法を示しています。

 db.teams.insertOne({team: " Mavs ", points: 31})
db.teams.insertOne({team: " Spurs ", points: 22})
db.teams.insertOne({team: " Rockets ", points: 19})
db.teams.insertOne({team: " Warriors ", points: 26})
db.teams.insertOne({team: " Cavs ", points: 33})
db.teams.insertOne({team: " Hornets ", points: 30})
db.teams.insertOne({team: " Nets ", points: 14})

例: MongoDB 内のドキュメントのランダムなサンプルを選択する

次のコードは、チームコレクションから4 つのドキュメントのランダム サンプルを選択する方法を示しています。

 db.teams.aggregate([ { $sample : { size: 4 } } ])

このクエリは次のドキュメントを返します。

 { _id: ObjectId("6203ee711e95a9885e1e765d"),
  team: 'Cavs',
  points: 33 }
{ _id: ObjectId("6203ee711e95a9885e1e765b"),
  team: 'Rockets',
  points: 19 }
{ _id: ObjectId("6203ee711e95a9885e1e7659"),
  team: 'Mavs',
  points: 31 }
{ _id: ObjectId("6203ee711e95a9885e1e765f"),
  team: 'Nets',
  points: 14 }

このランダム サンプルには次の 4 チームが含まれていることに注意してください。

  • ワイン商人
  • ロケット
  • マブス
  • ネット

$sample関数を再度使用すると、ドキュメントの別のランダムなサンプルが選択されます。これは、同じドキュメントのセットが選択されるという保証がないことを意味します。

たとえば、チームのコレクションから4 つのドキュメントの別のランダム サンプルを選択するとします。

 db.teams.aggregate([ { $sample : { size: 4 } } ])

このクエリは次のドキュメントを返します。

 { _id: ObjectId("6203ee711e95a9885e1e765b"),
  team: 'Rockets',
  points: 19 }
{ _id: ObjectId("6203ee711e95a9885e1e765f"),
  team: 'Nets',
  points: 14 }
{ _id: ObjectId("6203ee711e95a9885e1e765e"),
  team: 'Hornets',
  points: 30 }
{ _id: ObjectId("6203ee711e95a9885e1e765c"),
  team: 'Warriors',
  points: 26 }

このランダム サンプルには次の 4 チームが含まれています。

  • ロケット
  • ネット
  • スズメバチ
  • ウォリアーズ

このランダム サンプルは、前の例のランダム サンプルと完全には一致しないことに注意してください。

: $sample関数の完全なドキュメントはここにあります。

追加リソース

次のチュートリアルでは、MongoDB で他の一般的な操作を実行する方法について説明します。

MongoDB: フィールドに文字列が含まれているかどうかを確認する方法
MongoDB: 「NO IN」クエリの使用方法
MongoDB: 特定のフィールドで「NOT NULL」をクエリする方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です