Mongodb: jak wybrać losową próbkę dokumentów


Aby wybrać losową próbkę dokumentów z kolekcji w MongoDB, możesz użyć następującej składni:

 db.myCollection.aggregate([ { $sample : { size: 4 } } ])

W tym konkretnym przykładzie wybrano losową próbkę 4 dokumentów z kolekcji o nazwie myCollection .

Aby wybrać losową próbkę o innym rozmiarze, wystarczy zmienić wartość w argumencie rozmiaru .

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce w przypadku zespołu zbierającego, który ma siedem następujących dokumentów:

 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})

Przykład: Wybierz losową próbkę dokumentów w MongoDB

Poniższy kod pokazuje, jak wybrać losową próbkę 4 dokumentów z kolekcji zespołów :

 db.teams.aggregate([ { $sample : { size: 4 } } ])

To zapytanie zwraca następujące dokumenty:

 { _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 }

Należy pamiętać, że w tej losowej próbie znajdują się następujące cztery zespoły:

  • Handlarze winem
  • Rakiety
  • Mavs
  • Siatki

Jeśli ponownie użyjemy funkcji $sample , zostanie wybrana inna losowa próbka dokumentów, co oznacza, że nie ma gwarancji, że zostanie wybrany ten sam zestaw dokumentów.

Załóżmy na przykład, że wybieramy inną losową próbkę 4 dokumentów z kolekcji zespołu :

 db.teams.aggregate([ { $sample : { size: 4 } } ])

To zapytanie zwraca następujące dokumenty:

 { _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 }

W tej losowej próbie znajdują się następujące cztery zespoły:

  • Rakiety
  • Siatki
  • Szerszenie
  • Wojownicy

Należy zauważyć, że ta próbka losowa nie pasuje idealnie do próbki losowej z poprzedniego przykładu.

Uwaga : Pełną dokumentację funkcji $sample znajdziesz tutaj .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje w MongoDB:

MongoDB: Jak sprawdzić, czy pole zawiera ciąg znaków
MongoDB: Jak używać zapytania „NIE IN”.
MongoDB: Jak zapytać „NIE NULL” w określonym polu

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *