A partir de la versión 3.2 de MongoDB, puede obtener N documentos aleatorios de una colección utilizando $sample
operador de tubería de agregación:
// Get one random document from the mycoll collection.
db.mycoll.aggregate([{ $sample: { size: 1 } }])
Si desea seleccionar los documentos aleatorios de un subconjunto filtrado de la colección, anteponga un $match
etapa a la canalización:
// Get one random document matching {a: 10} from the mycoll collection.
db.mycoll.aggregate([
{ $match: { a: 10 } },
{ $sample: { size: 1 } }
])
Como se indica en los comentarios, cuando size
es mayor que 1, puede haber duplicados en la muestra del documento devuelto.