Počítání zdá se jako jedna z věcí, která by měla být levná, ale často není. Protože mongo neuchovává počet dokumentů, které odpovídají určitým kritériím ve svém indexu b-stromu, potřebuje průběžně skenovat dokumenty s počítáním indexů. To znamená, že stonásobné počítání dokumentů zabere 100krát více času, a to je zhruba to, co vidíme zde -- 0.018 * 100 = 1.8s .
Chcete-li to urychlit, máte několik možností:
- Aktivní počet je zhruba
estimatedDocumentCount() - db.users.countDocuments({status: 'inactive'}). Bylo by to dostatečně přesné pro váš případ použití? - Případně můžete udržovat
countsdokument v samostatné kolekci, kterou udržujete synchronizovanou s počtem aktivních/neaktivních dokumentů, které máte.