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

A estrutura agregada não pode usar índices


Esta é uma resposta tardia, mas como $group no Mongo a partir da versão 4.0 ainda não fará uso de índices, pode ser útil para outros.

Para acelerar significativamente sua agregação, execute um $sort antes de $group .

Assim, sua consulta se tornaria:
db.ads_view.aggregate({$sort:{"campaign":1}},{$group: {_id : "$campaign", "action" : {$sum: 1} }});

Isso pressupõe um índice na campaign , que deveria ter sido criado de acordo com sua pergunta. No Mongo 4.0, crie o índice com db.ads_view.createIndex({campaign:1}) .

Eu testei isso em uma coleção contendo 5,5+ Mio. documentos. Sem $sort , a agregação não teria terminado mesmo após várias horas; com $sort precedendo $group , a agregação está demorando alguns segundos.