À partir de la version 3.2 de MongoDB, vous pouvez obtenir N documents aléatoires à partir d'une collection en utilisant le $sample
opérateur de pipeline d'agrégation :
// Get one random document from the mycoll collection.
db.mycoll.aggregate([{ $sample: { size: 1 } }])
Si vous souhaitez sélectionner le(s) document(s) aléatoire(s) à partir d'un sous-ensemble filtré de la collection, ajoutez un $match
étape vers le pipeline :
// Get one random document matching {a: 10} from the mycoll collection.
db.mycoll.aggregate([
{ $match: { a: 10 } },
{ $sample: { size: 1 } }
])
Comme indiqué dans les commentaires, lorsque size
est supérieur à 1, il peut y avoir des doublons dans l'échantillon de document renvoyé.