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

różnica między agregacją ($match) a znajdowaniem w MongoDB?

Dlaczego zagregowane dane wyjściowe nie są zwracane jako DBCursor lub Lista?

Struktura agregacji została stworzona w celu rozwiązywania łatwych problemów, które w innym przypadku wymagałyby redukcji mapy.

Ta struktura jest powszechnie używana do obliczania danych, które wymagają pełnej bazy danych jako danych wejściowych i kilku dokumentów jako danych wyjściowych.

Jaka jest różnica między operatorem $match używanym w funkcji agregującej a zwykłym wyszukiwaniem w Mongodb?

Jedną z różnic, jak wspomniałeś, jest typ zwrotu. Wyniki operacji wyszukiwania zwracają jako DBCursor .

Inne różnice:

  • Wynik agregacji musi być mniejszy niż 16 MB. Jeśli używasz fragmentów, pełne dane muszą być zebrane w jednym punkcie po pierwszej grupie $ lub $sortuj .
  • $match jedynym celem jest poprawa mocy agregacji, ale ma też inne zastosowania, takie jak poprawa wydajności agregacji.

a także dlaczego nie możemy zliczyć dokumentów, które zostały zwrócone?

Możesz. Po prostu policz liczbę elementów w wynikowej tablicy lub dodaj następujące polecenie na końcu potoku:

{$group: {_id: null, count: {$sum: 1}}}

Dlaczego funkcja wyszukiwania nie pozwala na zmianę nazw pól, tak jak funkcja agregująca?

MongoDB jest młody i wciąż pojawiają się nowe funkcje. Może w przyszłej wersji będziemy mogli to zrobić. Zmiana nazw pól jest bardziej krytyczna w agregacji niż w znajdź .

EDYCJA (26.02.2014):

Operacje agregacji MongoDB 2.6 zwrócą kursor.

EDYCJA (2014/04/09):

MongoDB 2.6 został wydany z przewidywanymi zmianami agregacji.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak umieścić plik obrazu w obiekcie json?

  2. MongoDB:Jak zdefiniować schemat?

  3. mangusta/mongodb zapytanie wielokrotnego sortowania

  4. Jak przetestować metodę, która łączy się z mongo, bez faktycznego łączenia się z mongo?

  5. Jak uruchomić powłokę mongodb w kontenerze docker?