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

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *