Uso do MongoDB para construir uma API que fornece algumas funcionalidades de pesquisa e filtragem. Uma das pesquisas estava usando a consulta $ near. Como parte da chamada, o número total de documentos correspondentes à consulta também precisou ser retornado.
Havia um construtor de consultas responsável por construir as consultas. Em vez de distinguir entre uma consulta para uma contagem e uma consulta para retornar os documentos, a mesma consulta foi construída e usada para ambas as operações. Durante o teste de desempenho, houve um atraso perceptível no retorno de dados para chamadas, incluindo $ near queries.
Um pouco de investigação e um pensamento um pouco mais claro e o elemento $ near query incluído na consulta count () não faz sentido algum. Além disso, não é bom para o desempenho. Nenhuma redução no número de resultados ocorre por meio de $ near, então por que ele seria incluído nas consultas count ()? Bem, não deveria ser.
A remoção de $ near de count () melhorou significativamente o desempenho. Nesse caso específico, reduziu o tempo necessário para executar a consulta em pelo menos uma ordem de magnitude.
Um descuido bobo que deveria ter sido detectado durante uma revisão de código e que poderia ter se mostrado um pouco mais caro do que foi, se não tivesse sido encontrado por meio de testes de desempenho. Mesmo assim, interessante.