So zählen Sie Dokumente mit MongoDB Aggregate Count

So Zahlen Sie Dokumente Mit Mongodb Aggregate Count



Wie der Name schon sagt, muss die $count-Aggregation in MongoDB zum Zählen von Felddatensätzen verwendet werden. Eine der beliebtesten Methoden zum Zählen von Datensätzen ist die Verwendung der Methode count(). Darüber hinaus können Sie mit bestimmten Aggregationsoperatoren Datensätze zählen, die aus einer vorherigen Phase der Aggregatpipeline eingebracht wurden. In diesem Leitfaden besprechen wir heute die Zählaggregation von MongoDB anhand von Codebeispielen.

Beispiel 01

Um die $count-Operation für die Felder einer Datenbanksammlung in MongoDB auszuführen, benötigen wir zahlreiche Datensätze. Deshalb haben wir eine Sammlung mit dem Namen „Test“ erstellt und mit der Funktion insertMany() gleichzeitig 12 Datensätze darin eingefügt. Nun wurden die Datensätze dieser „Test“-Sammlung über die Funktionsabfrage find() auf der MongoDB-Shell angezeigt. Sie können sehen, dass es insgesamt drei Felder enthält: _id, Name und Score.

test> db.Test.find({})







Um nun die $count-Stufe auf ein beliebiges Feld anzuwenden, müssen wir die Aggregatfunktion von MongoDB innerhalb der „db“-Anweisung verwenden. Die Aggregatfunktion besteht aus der Bedingungsanweisung, die häufig den Operator $match für ein bestimmtes Feld verwendet, gefolgt von einem neuen Feld, das die Gesamtzahl anzeigt, die aus dem angegebenen Bedingungsfeld mithilfe des Operators $count ermittelt wurde.



In unserem Fall haben wir den $match-Operator verwendet, um nach den übereinstimmenden Datensätzen für den Wert „60“ im Score-Feld zu suchen, während der $count-Operator verwendet wurde, um die Gesamtzahl der abgerufenen Datensätze zu zählen und sie unter anzuzeigen neues Feld mit dem Namen „SameScore“. Die Ausgabe für diese Abfrage zeigte ein Feld „SameScore“ mit dem Wert „2“, was darauf hinweist, dass es in der Sammlung „Test“ zwei Datensätze mit dem „Score“-Wert „60“ ist 2 gibt.



db.Test.aggregate([ { $match: { 'Punktzahl' : 60 } }, { $count: „SameScore“ } ])

Sie können die $count-Aggregation auch verwenden, um andere Felder als Zahlen zu zählen, z. B. das Feld „Name“ der Testsammlung. Wir haben die Match-Aggregation verwendet, um nach dem Datensatz in der Sammlung zu suchen, bei dem das Namensfeld den Wert „John“ hat. Die Zählaggregation hat die Gesamtzahl der übereinstimmenden Datensätze erfolgreich gezählt, also 2.





db.Test.aggregate([ { $match: { 'Name' : 'John' } }, { $count: 'Gleicher Name' } ])

Beispiel 02

Lassen Sie uns die obige Abfrage aktualisieren und eine andere Bedingung anwenden, um andere Datensätze zu erhalten. Dieses Mal wenden wir die $match-Aggregation des Score-Felds an, um die Gesamtzahl der Datensätze zu ermitteln, bei denen das Score-Feld einen Wert von weniger als 30 hat. Die Zählaggregation zählt die Gesamtzahl der Datensätze und addiert sie zu einem neuen Spalte „Bewertet“. Die Ausgabe zeigt das Ergebnis „2“ als Zählzahl für den übereinstimmenden Wert.

db.Test.aggregate( [ { $match: { score: { $lt: 30 } } }, { $count: „Bewertet“ } ] )

Sie können die $count-Aggregation auch verwenden, während Sie die logischen Operatoren anwenden, um mehr als eine Bedingung für die Felddatensätze auszuführen. Daher wurden mit dem Operator $and insgesamt zwei Bedingungen auf das Feld „Score“ angewendet: gte (größer als oder gleich) und lte (kleiner als und gleich). Beide Bedingungen müssen wahr sein, um das Ergebnis zu erhalten und seine Datensätze zu zählen. Die Gesamtzahl zeigt, dass es fünf Datensätze mit den übereinstimmenden Kriterien gibt.



db.Test.aggregate( [ { $match: { „$und“ : [ { 'Punktzahl' : {$gte: 60 }}, { 'Punktzahl' : {$lte: 80 }} ] }},

{ $count: 'Note B' } ] )

Beispiel 03

In den obigen Abbildungen haben wir die Zählaggregation verwendet, um nur die Anzahl der übereinstimmenden Datensätze für die bestimmten Feldwerte zu ermitteln, z. B. eine bestimmte Punktzahl oder einen bestimmten Namen. Mit der Aggregationsmethode von MongoDB können Sie die Anzahl aller Datensätze ermitteln, die doppelte Werte in der Sammlung enthalten.

Dazu müssen Sie die $group-Aggregation innerhalb des Aggregatfunktionsbefehls verwenden, wie unten beschrieben. Das Feld _id wurde verwendet, um das Feld „Name“ anzugeben, für das die Zählaggregation funktionieren soll. Darüber hinaus nutzt das benutzerdefinierte Feld „NameCount“ die Aggregation „$count“, um mehrere Duplikate im Feld „Name“ zu zählen.

Die Ausgabe für diese Abfrage wurde unten angezeigt. Es enthält die Werte aus dem Feld „Name“ und deren Anzahl im Feld „NameCount“ entsprechend den Duplikaten von Werten, z. B. wenn Cillian 4 Duplikate usw. hat.

db.Test.aggregate([ { $group: { _id: '$name' , NameCount: { $count: {} }, }, }, ])

Beispiel 04

Wir können die Zählaggregation auch für verschachtelte Felddatensätze verwenden, um bestimmte Feldwerte zu zählen. Um dies näher zu erläutern, haben wir eine Sammlung mit dem Namen „Teacher“ erstellt und darin das verschachtelte Feld „sub“ und das Feld „shift“ vom Array-Typ zusammen mit anderen Feldern hinzugefügt: Name und Bezahlung. Die Funktion find() hat alle fünf Datensätze dieser Sammlung angezeigt.

test> db.Teacher.find({})

Jetzt haben wir die Aggregatfunktion angewendet, die den Match-Operator enthält. Außerdem wurde der $and-Operator auf das Unterfeld „math“ des Felds „sub“ angewendet, das zwei verschiedene Bedingungen enthält. Die Anzahl wurde dann berechnet. Die Ausgabe zeigt, dass es zwei Datensätze gibt, bei denen das Unterfeld math mehr als 10 und weniger als 20 Werte aufweist.

db.Teacher.aggregate( [ { $match: { „$und“ : [ { „sub.math“ : {$gte: 10 }}, { „sub.math“ : {$lte: zwanzig }} ] }}, { $count: „Klasse A“ } ] )

Beispiel 05

Schauen wir uns das letzte Beispiel an, um zu veranschaulichen, dass dieses Mal die Funktion count() anstelle der Zählaggregation verwendet wird. Daher wurde die Funktion count() auf das Array-Feld der „Teacher“-Sammlung, also „shift“, angewendet. Unter Verwendung der Indizes für das Array-Feld mit Index 2 haben wir das Übereinstimmungskriterium als „Nacht“ angegeben. Als Gesamtzahl der Zählungen für den Eintrag „Nacht“ wird „2“ ausgegeben.

db.Teacher.count({ „shift.2“ : 'Nacht' })

Ganz ähnlich kann die Funktion count() auch auf die verschachtelten Felder angewendet werden, etwa auf das Unterfeld „phy“ des Feldes „sub“ aus der Sammlung „Teacher“. Wir haben die Übereinstimmungskriterien mithilfe des „lte“-Operators angegeben, der Werte kleiner als 14 im Unterfeld „phy“ anzeigt. Die Ausgabe dieser Anweisung zeigt „2“ an, d. h. 4 Datensätze mit einem Wert kleiner als 14.

db.Teacher.count( { „sub.phy“ : { $lte: 14 } })

Abschluss

In diesem Leitfaden wurde die Verwendung der $count-Aggregation von MongoDB anhand mehrerer Codebeispiele demonstriert und näher erläutert. Die Beispiele umfassen die Auswirkungen der Zählaggregation, um die Zählzahl für bestimmte Wertdatensätze und alle Felddatensätze über die Sammlungen abzurufen. Außerdem umfasst es die Verwendung der Zählaggregation für Array-Felder und eingebettete (verschachtelte) Felder. Am Ende wurde das Funktionsbeispiel count() eingefügt, um einen Unterschied zwischen der Verwendung der Zählaggregation und der Zählfunktion zu machen.