Compter semble comme une de ces choses qui devraient être bon marché, mais qui ne le sont souvent pas. Étant donné que mongo ne tient pas compte du nombre de documents correspondant à certains critères dans son index b-tree, il doit parcourir l'index en comptant les documents au fur et à mesure. Cela signifie que compter 100x les documents prendra 100x plus de temps, et c'est à peu près ce que nous voyons ici -- 0.018 * 100 = 1.8s
.
Pour accélérer cela, vous avez quelques options :
- Le nombre d'actifs est approximativement
estimatedDocumentCount() - db.users.countDocuments({status: 'inactive'})
. Serait-ce suffisamment précis pour votre cas d'utilisation ? - Vous pouvez également conserver un
counts
document dans une collection distincte que vous synchronisez avec le nombre de documents actifs/inactifs dont vous disposez.