Zählen scheint wie eines dieser Dinge, die billig sein sollten, es aber oft nicht sind. Da Mongo die Anzahl der Dokumente, die bestimmten Kriterien entsprechen, nicht in seinem B-Tree-Index zählt, muss es den Index durchsuchen und dabei die Dokumente zählen. Das bedeutet, dass das 100-fache Zählen der Dokumente 100-mal so lange dauert, und das ist ungefähr das, was wir hier sehen – 0.018 * 100 = 1.8s
.
Um dies zu beschleunigen, haben Sie einige Möglichkeiten:
- Die aktive Anzahl beträgt ungefähr
estimatedDocumentCount() - db.users.countDocuments({status: 'inactive'})
. Wäre das für Ihren Anwendungsfall genau genug? - Alternativ können Sie einen
counts
pflegen Dokument in einer separaten Sammlung, die Sie mit der Anzahl Ihrer aktiven/inaktiven Dokumente synchron halten.