MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

mongodb.countDocuments ist langsam, wenn die Ergebnismenge groß ist, selbst wenn Index verwendet wird

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:

  1. Die aktive Anzahl beträgt ungefähr estimatedDocumentCount() - db.users.countDocuments({status: 'inactive'}) . Wäre das für Ihren Anwendungsfall genau genug?
  2. Alternativ können Sie einen counts pflegen Dokument in einer separaten Sammlung, die Sie mit der Anzahl Ihrer aktiven/inaktiven Dokumente synchron halten.