unwind two fields example mongodb performance aggregation-framework

two - pipeline mongodb



Marco de agregación de Mongodb: ¿$ group usa el índice? (3)

Estoy tratando de usar el marco de agregación con las etapas $match y $group . ¿La fase de $group usa los datos de índice? Estoy usando la última versión mongodb disponible - 2.5.4


Como dice la respuesta de 4J41, $group no usa (directamente) un índice, aunque $sort hace si es la primera etapa en la tubería. Sin embargo, parece posible que $group pueda, en principio, tener una implementación optimizada si sigue inmediatamente a $sort , en cuyo caso usted podría hacer un uso efectivo de un índice poniendo un $sort antes.

De todos modos, no parece haber una respuesta directa en los documentos sobre si $group tiene esta optimización (aunque apuesto a que la habría si así fuera, así que esto sugiere que no es así). La respuesta está en el error 4507 de MongoDB : actualmente $group NO tiene esta implementación, por lo que la línea superior de la respuesta de 4J41 es la correcta, después de todo. Si realmente necesita eficiencia, dependiendo de la aplicación, puede ser más rápido usar una consulta regular y hacer la agrupación en su código de cliente.



$group no utiliza datos de índice.

De la docs mongoDB:

Los operadores de canalización $ match y $ sort pueden aprovechar un índice cuando se producen al comienzo de la tubería.

El operador de la tubería $ geoNear aprovecha un índice geoespacial. Cuando se utiliza $ geoNear, la operación de la tubería $ geoNear debe aparecer como la primera etapa en una tubería de agregación.