In MongoDB der $count
Der Aggregationsoperator übergibt ein Dokument an die nächste Stufe in der Aggregationspipeline, die eine Zählung der Anzahl der in die aktuelle Stufe eingegebenen Dokumente enthält.
Beispiel
Angenommen, wir haben eine Sammlung namens pets
mit folgenden Dokumenten:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 } { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 } { "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 } { "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 } { "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }
Wir können die folgende Aggregationsoperation verwenden, um die Anzahl der Hunde in der Sammlung zu zählen:
db.pets.aggregate([
{
$match: { type: "Dog" }
},
{
$count: "DogCount"
}
])
Ergebnis:
{ "DogCount" : 4 }
Die Aggregationspipeline funktioniert so, dass sie aus Stufen besteht. Jede Pipelinestufe liefert die Eingabe für die nächste Stufe.
Daher hat die erste Stufe im obigen Beispiel die Sammlung auf nur die Dokumente mit einem type
gefiltert von dog
. Die zweite Stufe nahm diese Dokumente, zählte sie und übergab das Ergebnis an die nächste Stufe. Da es die letzte Phase in der Pipeline war, haben wir die Ausgabe gesehen.
Gruppierte Dokumente zählen
Hier ist ein Beispiel, das den Aggregatoperator $group mit $count kombiniert, um eine Anzahl von jeder Art von Haustier unter einem bestimmten Gewicht zurückzugeben.
db.pets.aggregate([
{
$match: { weight: { $lt: 30 } }
},
{
$group: { _id: "$type", count: { $sum: 1 } }
}
])
Ergebnis:
{ "_id" : "Cat", "count" : 2 }
{ "_id" : "Bat", "count" : 1 }
{ "_id" : "Dog", "count" : 3 }
Fügen Sie eine Pipeline-Phase hinzu
In diesem Beispiel fügen wir eine Pipelinestufe hinzu, um die Ergebnisse zu sortieren. Insbesondere verwenden wir den $sort
Operator, um dies zu tun.
db.pets.aggregate([
{
$match: { weight: { $lt: 30 } }
},
{
$group: { _id: "$type", count: { $sum: 1 } }
},
{
$sort : { count : -1, _id: 1 }
}
])
Ergebnis:
{ "_id" : "Dog", "count" : 3 }
{ "_id" : "Cat", "count" : 2 }
{ "_id" : "Bat", "count" : 1 }
In diesem Fall haben wir nach der Anzahl in absteigender Reihenfolge sortiert (der -1
gibt absteigende Reihenfolge an), dann nach _id
in aufsteigender Reihenfolge (die 1
gibt aufsteigende Reihenfolge an).
Weitere Informationen
Weitere Informationen finden Sie in der MongoDB-Dokumentation.