MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Retorna um número limitado de registros de um determinado tipo, mas um número ilimitado de outros registros?


Eu não acho que isso é atualmente (2.6) possível fazer com um pipeline de agregação. É difícil dar um argumento preciso sobre por que não, mas basicamente o pipeline de agregação realiza transformações de fluxos de documentos, um documento por vez. Não há consciência no pipeline do estado do próprio fluxo, que é o que você precisa para determinar que atingiu o limite de A, B, etc. e precisa descartar outros documentos do mesmo tipo. $group reúne vários documentos e permite que os seus valores de campo em conjunto afectem o documento de grupo resultante ($sum , $avg , etc). Talvez isso faça algum sentido, mas não é necessariamente rigoroso porque existem operações simples que você pode adicionar para tornar possível limitar com base nos tipos, por exemplo, adicionar um $push x acumulador para $group que apenas envia o valor se a matriz que está sendo enviada tiver menos de x elementos.

Mesmo se eu tivesse uma maneira de fazer isso, eu recomendaria apenas fazer duas agregações. Mantenha simples.