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

Zwrócić ograniczoną liczbę rekordów określonego typu, ale nieograniczoną liczbę innych rekordów?

Nie sądzę, aby obecnie (2.6) można to zrobić za pomocą jednego potoku agregacji. Trudno podać dokładny argument, dlaczego nie, ale zasadniczo potok agregacji wykonuje transformacje strumieni dokumentów, jeden dokument na raz. W potoku nie ma świadomości stanu samego strumienia, co jest potrzebne, aby określić, że osiągnąłeś limit dla A, B itd. i musisz porzucić kolejne dokumenty tego samego typu. $group łączy ze sobą wiele dokumentów i pozwala zagregowanym wartościom pól wpłynąć na wynikowy dokument grupowy ($sum , $avg itp.). Może ma to jakiś sens, ale niekoniecznie jest to rygorystyczne, ponieważ istnieją proste operacje, które można dodać, aby umożliwić ograniczenie na podstawie typów, np. dodanie $push x akumulator do $group która wypycha wartość tylko wtedy, gdy przekazywana tablica ma mniej niż x elementów.

Nawet gdybym miał na to sposób, sugerowałbym wykonanie dwóch agregacji. Zachowaj prostotę.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak korzystać z Mongoose bez definiowania schematu?

  2. Promuj podpola do najwyższego poziomu w projekcji bez wyświetlania wszystkich kluczy

  3. używanie zmiennej w aktualizacji mongodb

  4. MongoDB a MySQL

  5. Wstawka partii Mongoose (mongodb)?