MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Renvoyer un nombre limité d'enregistrements d'un certain type, mais un nombre illimité d'autres enregistrements ?

Je ne pense pas que cela soit actuellement (2.6) possible avec un seul pipeline d'agrégation. Il est difficile de donner un argument précis quant à pourquoi pas, mais fondamentalement, le pipeline d'agrégation effectue des transformations de flux de documents, un document à la fois. Il n'y a aucune conscience dans le pipeline de l'état du flux lui-même, ce dont vous auriez besoin pour déterminer que vous avez atteint la limite pour les A, les B, etc. et que vous devez supprimer d'autres documents du même type. $group rassemble plusieurs documents et permet à leurs valeurs de champ agrégées d'affecter le document de groupe résultant ($sum , $avg , etc.). Peut-être que cela a du sens, mais ce n'est nécessairement pas rigoureux car il y a des opérations simples que vous pourriez ajouter pour permettre de limiter en fonction des types, par exemple, ajouter un $push x accumulateur à $group qui ne pousse la valeur que si le tableau en cours de poussée contient moins de x éléments.

Même si j'avais un moyen de le faire, je recommanderais de ne faire que deux agrégations. Restez simple.