MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB $przykładowa stawka

W MongoDB $sampleRate etap potoku agregacji dopasowuje losowy wybór dokumentów wejściowych.

Liczba wybranych dokumentów jest przybliżoną częstotliwością próbkowania wyrażoną jako procent całkowitej liczby dokumentów.

$sampleRate operator został wprowadzony w MongoDB 4.4.2.

Gdy używasz $sampleRate , podajesz częstotliwość próbkowania jako liczbę zmiennoprzecinkową między 0 i 1 . Proces selekcji wykorzystuje jednolity losowy rozkład, a podana częstotliwość próbkowania reprezentuje prawdopodobieństwo, że dany dokument zostanie wybrany podczas przechodzenia przez potok.

Przykład

Załóżmy, że mamy kolekcję o nazwie employees z następującymi dokumentami:

{ "_id" : 1, "name" : "Bob", "salary" : 55000 }
{ "_id" : 2, "name" : "Sarah", "salary" : 128000 }
{ "_id" : 3, "name" : "Fritz", "salary" : 25000 }
{ "_id" : 4, "name" : "Christopher", "salary" : 45000 }
{ "_id" : 5, "name" : "Beck", "salary" : 82000 }
{ "_id" : 6, "name" : "Homer", "salary" : 1 }
{ "_id" : 7, "name" : "Bartholomew", "salary" : 1582000 }
{ "_id" : 8, "name" : "Zoro", "salary" : 300000 }
{ "_id" : 9, "name" : "Xena", "salary" : 382000 }

Możemy użyć $sample etap, aby losowo wybrać określoną liczbę dokumentów z tej kolekcji.

Przykład:

db.employees.aggregate(
   [
      { 
        $match: { $sampleRate: 0.33 } 
      }
   ]
)

Wynik:

{ "_id" : 1, "name" : "Bob", "salary" : 55000 }
{ "_id" : 6, "name" : "Homer", "salary" : 1 }
{ "_id" : 8, "name" : "Zoro", "salary" : 300000 }

Zapewniając częstotliwość próbkowania 0.33 , określiliśmy, że około jedna trzecia dokumentów powinna zostać zwrócona.

Jednak rzeczywisty wynik może się znacznie różnić w zależności od tego, ile dokumentów znajduje się w kolekcji. Kolekcje z mniejszą liczbą dokumentów będą miały dość zróżnicowane wyniki, podczas gdy większe zbiory powinny być bliższe oczekiwanemu jednolitemu rozkładowi losowemu.

Aby to zademonstrować, oto zestaw wyników, który otrzymuję, gdy ponownie uruchamiam ten sam kod:

{ "_id" : 2, "name" : "Sarah", "salary" : 128000 }
{ "_id" : 3, "name" : "Fritz", "salary" : 25000 }
{ "_id" : 4, "name" : "Christopher", "salary" : 45000 }
{ "_id" : 5, "name" : "Beck", "salary" : 82000 }
{ "_id" : 6, "name" : "Homer", "salary" : 1 }
{ "_id" : 7, "name" : "Bartholomew", "salary" : 1582000 }

I znowu:

{ "_id" : 7, "name" : "Bartholomew", "salary" : 1582000 }
{ "_id" : 8, "name" : "Zoro", "salary" : 300000 }

I jeszcze raz:

{ "_id" : 3, "name" : "Fritz", "salary" : 25000 }
{ "_id" : 6, "name" : "Homer", "salary" : 1 }
{ "_id" : 7, "name" : "Bartholomew", "salary" : 1582000 }

Jest to mniejsza kolekcja, więc wyniki znacznie się różnią.

Jeśli chcesz zwrócić dokładną liczbę dokumentów, użyj $sample zamiast tego na scenie.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Unikalne dokumenty używające wielu wartości w schemacie Mongoose

  2. Percona Live Frankfurt 2018 - Podsumowanie wydarzenia i nasze sesje

  3. Jak korzystać z mangusty Obietnica - mongo

  4. MongoDB odrębne polecenie

  5. Zapytanie Mongodb o miesiąc, dzień, rok... daty i godziny