Tellen lijkt als een van die dingen die goedkoop zouden moeten zijn, maar dat vaak niet is. Omdat mongo geen telling bijhoudt van het aantal documenten dat aan bepaalde criteria voldoet in zijn b-tree-index, moet het gaandeweg door de index-tellingsdocumenten bladeren. Dat betekent dat het 100x tellen van de documenten 100x de tijd kost, en dit is ongeveer wat we hier zien -- 0.018 * 100 = 1.8s
.
Om dit te versnellen, heb je een paar opties:
- Het actieve aantal is ongeveer
estimatedDocumentCount() - db.users.countDocuments({status: 'inactive'})
. Zou dit nauwkeurig genoeg zijn voor uw gebruik? - Als alternatief kunt u een
counts
document in een aparte collectie die u synchroon houdt met het aantal actieve/inactieve documenten dat u heeft.