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

Strategie agregacji w czasie rzeczywistym w MongoDB

Wygląda na to, że dodałeś dwa pola age_rank , average_age . Są to skutecznie obliczane pola na podstawie danych, które już posiadasz. Jeśli podałbym ci dokument z odsłonami stron i datami urodzin użytkowników, znalezienie przez kod klienta min./maks., średniej itp. powinno być naprawdę proste.

Wydaje mi się, że prosisz MongoDB o wykonanie agregacji po stronie serwera. Ale dodajesz ograniczenie, że nie chcesz używać Map/Reduce?

Jeśli dobrze rozumiem Twoje pytanie, szukasz czegoś, w czym możesz powiedzieć „dodaj ten element do tablicy i zaktualizuj wszystkie elementy zależne” ? Nie chcesz, aby czytelnicy wykonywali jakąkolwiek logikę, chcesz, aby wszystko działo się „magicznie” po stronie serwera.

Istnieją więc trzy różne sposoby rozwiązania tego problemu, ale obecnie dostępny jest tylko jeden z nich:

  1. Zapisz tę logikę po stronie klienta. To nie brzmi jak rozwiązanie, którego szukasz, ale zadziała. Jeśli masz podstawowe dane, wykonanie max/min/med/avg powinno być dość proste w większości języków.
  2. Wykorzystaj nadchodzące funkcje Agregacja . Nie są one zaplanowane do 1.9.x. Ulepszona agregacja pozwoli wydobyć dane, których szukasz, jednak nadal będziesz musiał napisać odpowiednie zapytania. Bazowa baza danych nadal nie zawiera danych, których szukasz.
  3. Potrzebujesz wyzwalaczy . Jeśli naprawdę chcesz, aby baza danych była zawsze spójna i zawierała podsumowane dane, to jest to, czego potrzebujesz. Jednak funkcja wyzwalaczy jeszcze nie istnieje.

Niestety, jedyną opcją w tej chwili jest #1. Na szczęście znam kilka osób, które z powodzeniem korzystają z opcji 1.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak używać $query, $hint lub $explain z Javy

  2. Jak naprawić {document}.Id nie jest obsługiwany błąd

  3. Konwertuj zapytanie MongoDB na składnię Spring MongoDB

  4. Wstawianie i sprawdzanie daty za pomocą MongoDB i Nodejs

  5. Aktualizowanie tablicy zagnieżdżonej wewnątrz tablicy mongodb