Il conteggio sembra come una di quelle cose che dovrebbero essere economiche, ma spesso non lo sono. Poiché mongo non mantiene un conteggio del numero di documenti che soddisfano determinati criteri nel suo indice b-tree, deve eseguire la scansione dell'indice contando i documenti man mano che procede. Ciò significa che contando 100 volte i documenti impiegheranno 100 volte il tempo, e questo è più o meno ciò che vediamo qui -- 0.018 * 100 = 1.8s
.
Per accelerare, hai alcune opzioni:
- Il conteggio attivo è all'incirca
estimatedDocumentCount() - db.users.countDocuments({status: 'inactive'})
. Sarebbe abbastanza accurato per il tuo caso d'uso? - In alternativa, puoi mantenere un
counts
documento in una raccolta separata che mantieni sincronizzato con il numero di documenti attivi/non attivi che hai.