sql >> Database teknologi >  >> NoSQL >> MongoDB

Returnere begrænset antal poster af en bestemt type, men ubegrænset antal andre poster?

Jeg tror ikke, at dette på nuværende tidspunkt (2.6) er muligt at gøre med én aggregeringspipeline. Det er svært at give et præcist argument for hvorfor ikke, men dybest set udfører aggregeringspipelinen transformationer af strømme af dokumenter, et dokument ad gangen. Der er ingen bevidsthed i pipelinen om tilstanden af ​​selve strømmen, hvilket er det, du skal bruge for at fastslå, at du har nået grænsen for A'er, B'er osv. og er nødt til at droppe yderligere dokumenter af samme type. $group bringer flere dokumenter sammen og tillader deres feltværdier samlet at påvirke det resulterende gruppedokument ($sum , $avg , etc.). Måske giver dette mening, men det er nødvendigvis ikke strengt, fordi der er simple operationer, du kan tilføje for at gøre det muligt at begrænse baseret på typerne, f.eks. tilføje en $push x akkumulator til $group der kun skubber værdien, hvis det array, der skubbes til, har færre end x elementer.

Selvom jeg havde en måde at gøre det på, vil jeg anbefale bare at lave to sammenlægninger. Hold det enkelt.



  1. redis hukommelse og cpu spikes

  2. Oprettelse af et udenlandsk nøgleforhold i Mongoose

  3. Redis Key udløbsmeddelelse med Jedis

  4. Formand ophører med det samme