sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Devolver un número limitado de registros de cierto tipo, pero un número ilimitado de otros registros?

No creo que esto sea posible actualmente (2.6) con una canalización de agregación. Es difícil dar un argumento preciso de por qué no, pero básicamente la canalización de agregación realiza transformaciones de flujos de documentos, un documento a la vez. No hay conocimiento dentro de la tubería del estado de la transmisión en sí, que es lo que necesitaría para determinar que ha alcanzado el límite de A, B, etc. y necesita eliminar más documentos del mismo tipo. $group reúne varios documentos y permite que sus valores de campo en conjunto afecten el documento de grupo resultante ($sum , $avg , etc.). Tal vez esto tenga sentido, pero no es necesariamente riguroso porque hay operaciones simples que podría agregar para que sea posible limitar según los tipos, por ejemplo, agregar un $push x acumulador a $group eso solo empuja el valor si la matriz que se está empujando tiene menos de x elementos.

Incluso si tuviera una forma de hacerlo, recomendaría simplemente hacer dos agregaciones. Mantenlo simple.