MongoDBの3.2リリース以降、$sample
を使用して、コレクションからN個のランダムなドキュメントを取得できます。 集約パイプライン演算子:
// Get one random document from the mycoll collection.
db.mycoll.aggregate([{ $sample: { size: 1 } }])
コレクションのフィルタリングされたサブセットからランダムなドキュメントを選択する場合は、$match
を先頭に追加します パイプラインへのステージ:
// Get one random document matching {a: 10} from the mycoll collection.
db.mycoll.aggregate([
{ $match: { a: 10 } },
{ $sample: { size: 1 } }
])
コメントに記載されているように、size
が1より大きい場合、返されたドキュメントサンプルに重複がある可能性があります。