Contar parece como uma daquelas coisas que deveriam ser baratas, mas muitas vezes não são. Como o mongo não mantém uma contagem do número de documentos que correspondem a determinados critérios em seu índice de árvore b, ele precisa varrer os documentos de contagem de índice à medida que avança. Isso significa que contar 100 vezes os documentos levará 100 vezes o tempo, e isso é aproximadamente o que vemos aqui --
0.018 * 100 = 1.8s
. Para acelerar isso, você tem algumas opções:
- A contagem ativa é aproximadamente
estimatedDocumentCount() - db.users.countDocuments({status: 'inactive'})
. Isso seria preciso o suficiente para seu caso de uso? - Como alternativa, você pode manter uma
counts
documento em uma coleção separada que você mantém em sincronia com o número de documentos ativos/inativos que você possui.