Från och med 3.2-versionen av MongoDB kan du hämta N slumpmässiga dokument från en samling med $sample
aggregeringspipeline-operatör:
// Get one random document from the mycoll collection.
db.mycoll.aggregate([{ $sample: { size: 1 } }])
Om du vill välja det eller de slumpmässiga dokumenten från en filtrerad delmängd av samlingen, infoga en $match
steg till pipelinen:
// Get one random document matching {a: 10} from the mycoll collection.
db.mycoll.aggregate([
{ $match: { a: 10 } },
{ $sample: { size: 1 } }
])
Som noterats i kommentarerna, när size
är större än 1, kan det finnas dubbletter i det returnerade dokumentexemplet.