Започвайки с версията 3.2 на MongoDB, можете да получите N произволни документи от колекция, като използвате $sample
оператор на тръбопровод за агрегиране:
// 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, може да има дубликати в извадката на върнатия документ.