Wie erklären Sie für eine MongoDB zählen?
In MongoDB, erhalten Sie eine Erklärung dafür, wie eine Abfrage ausgeführt wurde, mit interessanten performance-Informationen:
> db.people.find({ 'items' : { '$gte' : 1 } }).explain()
Bekomme ich das gleiche für eine "Zählung" (das ist keine Abfrage, sondern ein Befehl)?
> db.people.count({ 'items' : { '$gte' : 1 } })
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mongo 3.0 eingeführt, einen neuen Weg zu erklären, nicht-cursor-Anfragen:
Finden Sie unter: http://docs.mongodb.org/manual/reference/method/db.collection.explain/#db.collection.explain
db.my_collection.explain().count({ 'items' : { '$gte' : 1 } })
Basierend auf https://jira.mongodb.org/browse/SERVER-14098, eine neue, zukünftige version wird diese in das format:
Ich bin mir ziemlich sicher, dass count(query) ist die Abkürzung für find(query).die count () - --in anderen Worten, die erklären, ist genau das gleiche. Es gibt keine spezifische zählen die Optimierung getan, außer vielleicht für eine vollständige Sammlung zählen. Zum Beispiel läuft ein count auf einem nicht indizierten Feld für eine Reihe genau die gleiche Zeit wie läuft eine finden.erklären Sie mit die gleiche Reichweite.
Ich schrieb eine Funktion, die aufgerufen wird timeCount, die den Durchschnitt der count-Funktion der Zeit, und dann zeigt die explain-Ausgabe zum Vergleich.
Die Ausgabe sieht wie folgt aus:
db.people.find({}).count().explain()
ist ein Fehler, genau wiedb.people.count({}).explain()
.n
dann, weil Sie nicht wissen, dass bevor der Blick auf die nicht-indizierte Felder in das Dokument? Oder waren Sie nur reden über den Fall, wo es keine Abfrage?Im moment kann man nicht eine
explain()
auf einecount()
weil count es ist ein Befehl und kein cursor.Dies ist JIRA issue tracking-diese Anfrage: https://jira.mongodb.org/browse/SERVER-3493