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