MongoDB : Comment sélectionner un échantillon aléatoire de documents
Vous pouvez utiliser la syntaxe suivante pour sélectionner un échantillon aléatoire de documents dans une collection dans MongoDB :
db.myCollection.aggregate([ { $sample: { size: 4 } } ])
Cet exemple particulier sélectionne un échantillon aléatoire de 4 documents de la collection intitulée myCollection .
Pour choisir un échantillon aléatoire d’une taille différente, modifiez simplement la valeur dans l’argument taille .
L’exemple suivant montre comment utiliser cette syntaxe en pratique avec une équipe de collection comportant les sept documents suivants :
db.teams.insertOne({team: "Mavs", points: 31})
db.teams.insertOne({team: "Spurs", points: 22})
db.teams.insertOne({team: "Rockets", points: 19})
db.teams.insertOne({team: "Warriors", points: 26})
db.teams.insertOne({team: "Cavs", points: 33})
db.teams.insertOne({team: "Hornets", points: 30})
db.teams.insertOne({team: "Nets", points: 14})
Exemple : sélectionner un échantillon aléatoire de documents dans MongoDB
Le code suivant montre comment sélectionner un échantillon aléatoire de 4 documents de la collection des équipes :
db.teams.aggregate([ { $sample: { size: 4 } } ])
Cette requête renvoie les documents suivants :
{ _id: ObjectId("6203ee711e95a9885e1e765d"),
team: 'Cavs',
points: 33 }
{ _id: ObjectId("6203ee711e95a9885e1e765b"),
team: 'Rockets',
points: 19 }
{ _id: ObjectId("6203ee711e95a9885e1e7659"),
team: 'Mavs',
points: 31 }
{ _id: ObjectId("6203ee711e95a9885e1e765f"),
team: 'Nets',
points: 14 }
Notez que les quatre équipes suivantes sont incluses dans cet échantillon aléatoire :
- Cavistes
- Fusées
- Mavs
- Filets
Si nous utilisons à nouveau la fonction $sample , elle sélectionnera un autre échantillon aléatoire de documents, ce qui signifie qu’il n’y a aucune garantie que le même ensemble de documents sera choisi.
Par exemple, supposons que nous sélectionnions un autre échantillon aléatoire de 4 documents de la collection de l’ équipe :
db.teams.aggregate([ { $sample: { size: 4 } } ])
Cette requête renvoie les documents suivants :
{ _id: ObjectId("6203ee711e95a9885e1e765b"),
team: 'Rockets',
points: 19 }
{ _id: ObjectId("6203ee711e95a9885e1e765f"),
team: 'Nets',
points: 14 }
{ _id: ObjectId("6203ee711e95a9885e1e765e"),
team: 'Hornets',
points: 30 }
{ _id: ObjectId("6203ee711e95a9885e1e765c"),
team: 'Warriors',
points: 26 }
Les quatre équipes suivantes sont incluses dans cet échantillon aléatoire :
- Fusées
- Filets
- Frelons
- Guerriers
Notez que cet échantillon aléatoire ne correspond pas parfaitement à l’échantillon aléatoire de l’exemple précédent.
Remarque : Vous pouvez trouver la documentation complète de la fonction $sample ici .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans MongoDB :
MongoDB : Comment vérifier si le champ contient une chaîne
MongoDB : Comment utiliser une requête « NON IN »
MongoDB : Comment interroger « NON NULL » dans un champ spécifique
