Począwszy od wydania 3.2 MongoDB, możesz pobrać N losowych dokumentów z kolekcji za pomocą $sample
operator potoku agregacji:
// Get one random document from the mycoll collection.
db.mycoll.aggregate([{ $sample: { size: 1 } }])
Jeśli chcesz wybrać losowy dokument(y) z filtrowanego podzbioru kolekcji, dołącz $match
etap do rurociągu:
// Get one random document matching {a: 10} from the mycoll collection.
db.mycoll.aggregate([
{ $match: { a: 10 } },
{ $sample: { size: 1 } }
])
Jak zauważono w komentarzach, kiedy size
jest większa niż 1, w zwróconej próbce dokumentu mogą występować duplikaty.