At tælle synes som en af de ting, der burde være billige, men ofte ikke er. Fordi mongo ikke opretholder en optælling af antallet af dokumenter, der matcher visse kriterier i sit b-træ-indeks, skal den scanne gennem indeksoptællingsdokumenterne, mens den går. Det betyder, at det vil tage 100 gange tid at tælle dokumenterne, og det er nogenlunde det, vi ser her -- 0.018 * 100 = 1.8s
.
For at fremskynde dette, har du et par muligheder:
- Det aktive antal er nogenlunde
estimatedDocumentCount() - db.users.countDocuments({status: 'inactive'})
. Ville dette være nøjagtigt nok til din brug? - Alternativt kan du opretholde en
counts
dokument i en separat samling, som du holder synkroniseret med antallet af aktive/inaktive dokumenter, du har.