Počínaje verzí 3.2 MongoDB můžete získat N náhodných dokumentů ze sbírky pomocí $sample
operátor agregačního kanálu:
// Get one random document from the mycoll collection.
db.mycoll.aggregate([{ $sample: { size: 1 } }])
Pokud chcete vybrat náhodné dokumenty z filtrované podmnožiny kolekce, přidejte před $match
etapa do potrubí:
// Get one random document matching {a: 10} from the mycoll collection.
db.mycoll.aggregate([
{ $match: { a: 10 } },
{ $sample: { size: 1 } }
])
Jak je uvedeno v komentářích, když size
je větší než 1, mohou být ve vráceném vzorku dokumentu duplikáty.