Comment compter les documents avec le nombre global de MongoDB

Comment Compter Les Documents Avec Le Nombre Global De Mongodb



Comme son nom l'indique, l'agrégation $count dans MongoDB doit être utilisée pour compter les enregistrements de champ. L’une des méthodes les plus courantes pour compter les enregistrements consiste à utiliser la méthode count(). De plus, certains opérateurs d'agrégation vous permettent de compter les enregistrements provenant d'une étape précédente du pipeline d'agrégation. Dans ce guide aujourd'hui, nous discuterons de l'agrégation de comptes de MongoDB à l'aide d'exemples de code.

Exemple 01

Pour effectuer l'opération $count sur les champs d'une collection de base de données dans MongoDB, nous avons besoin de nombreux enregistrements. Par conséquent, nous avons créé une collection nommée « Test » et y avons inséré 12 enregistrements simultanément à l’aide de la fonction insertMany(). Désormais, les enregistrements de cette collection « Test » ont été affichés sur le shell MongoDB via la requête de fonction find(). Vous pouvez voir qu'il comporte un total de trois champs :_id, name et score.

test> db.Test.find({})







Désormais, pour appliquer l'étape $count sur n'importe quel champ, nous devons utiliser la fonction d'agrégation de MongoDB dans l'instruction « db ». La fonction d'agrégation se compose d'une instruction de condition, utilisant souvent l'opérateur $match sur un champ spécifique, suivie d'un nouveau champ qui affiche le nombre total obtenu à partir du champ de condition spécifié à l'aide de l'opérateur $count.



Dans notre cas, nous avons utilisé l'opérateur $match pour rechercher les enregistrements correspondants pour la valeur « 60 » dans le champ score, tandis que l'opérateur $count a été utilisé pour compter le nombre total d'enregistrements récupérés et les afficher sous le champ de score. nouveau champ nommé « SameScore ». La sortie de cette requête a montré un champ « SameScore » avec la valeur « 2 » indiquant qu'il existe deux enregistrements avec la valeur « score » « 60 » est 2 dans la collection « Test ».



db.Test.aggregate([ { $match : { 'score' : 60 } }, { $compte : 'Même score' } ])

Vous pouvez également utiliser l'agrégation $count pour compter les champs autres que les nombres, comme le champ « nom » de la collection Test. Nous utilisons l'agrégation de correspondances pour rechercher l'enregistrement dans la collection où le champ de nom a la valeur « John ». L'agrégation de comptage a réussi à compter le nombre total d'enregistrements correspondants, soit 2.





db.Test.aggregate([ { $match : { 'nom' : 'John' } }, { $compte : 'Même nom' } ])

Exemple 02

Mettons à jour la requête ci-dessus et appliquons une autre condition pour obtenir des enregistrements différents. Cette fois, nous appliquerons l'agrégation $match du champ de score pour obtenir le nombre total d'enregistrements où le champ de score a une valeur inférieure à 30. L'agrégation de comptage comptera le nombre total d'enregistrements et l'ajoutera à un nouveau colonne « Note D ». La sortie affiche le résultat « 2 » comme numéro de comptage pour la valeur correspondante.

db.Test.aggregate( [ { $match : { score : { $lt : 30 } } }, { $compte : « Note D » } ] )

Vous pouvez également utiliser l'agrégation $count tout en appliquant les opérateurs logiques pour effectuer plus d'une condition sur les enregistrements de champ. Par conséquent, un total de deux conditions ont été appliquées au champ « Score » à l'aide de l'opérateur $and : gte (supérieur ou égal à) et lte (inférieur et égal à). Les deux conditions doivent être vraies pour obtenir le résultat et compter ses enregistrements. Le nombre total indique qu'il existe cinq enregistrements correspondant aux critères correspondants.



db.Test.aggregate( [ { $match : { '$et' : [ { 'score' : {$gte: 60 }}, { 'score' : {$lte : 80 }} ] }},

{ $compte : 'Catégorie B' } ] )

Exemple 03

Dans les illustrations ci-dessus, nous avons utilisé l'agrégation de comptes pour obtenir uniquement le nombre d'enregistrements correspondant aux valeurs de champ particulières, telles qu'un score ou un nom spécifié. La méthode d'agrégation de MongoDB vous permet d'obtenir le nombre de tous les enregistrements contenant des valeurs en double dans la collection.

Pour cela, vous devez utiliser l'agrégation $group dans la commande de fonction d'agrégation, comme ci-dessous. Le champ _id a été utilisé pour spécifier le champ « nom » sur lequel fonctionnerait l'agrégation des comptes. Parallèlement à cela, le champ défini par l'utilisateur NameCount utilisera l'agrégation $count pour compter plusieurs doublons dans le champ « nom ».

Le résultat de cette requête a été affiché ci-dessous. Il contient les valeurs du champ « nom » et leur numéro de compte dans le champ NameCount en fonction des duplications de valeurs, comme Cillian ayant 4 doublons, et ainsi de suite.

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

Exemple 04

Nous pouvons également utiliser l'agrégation de comptes sur des enregistrements de champs imbriqués pour compter des valeurs de champs particulières. Pour approfondir cela, nous avons créé une collection nommée « Teacher » et y avons ajouté le champ imbriqué « sub » et le champ de type tableau « shift » ainsi que d'autres champs : nom et paie. La fonction find() affiche les cinq enregistrements de cette collection.

test> db.Teacher.find({})

Maintenant, nous avons appliqué la fonction d'agrégation contenant l'opérateur de correspondance. De plus, l'opérateur $and a été appliqué au sous-champ « math » du champ « sub », qui contient deux conditions différentes. Le décompte a ensuite été calculé. Le résultat montre qu'il existe deux enregistrements dans lesquels le sous-champ mathématique comporte plus de 10 et moins de 20 valeurs.

db.Teacher.aggregate( [ { $match : { '$et' : [ { 'sous-mathématiques' : {$gte: dix }}, { 'sous-mathématiques' : {$lte : vingt }} ] }}, { $compte : 'Catégorie A' } ] )

Exemple 05

Regardons le dernier exemple pour illustrer l'utilisation de la fonction count() cette fois au lieu d'utiliser l'agrégation count. Ainsi, la fonction count() a été appliquée au champ de type tableau de la collection « Teacher », c'est-à-dire « shift ». En utilisant les index du champ tableau utilisant l'index 2, nous avons spécifié le critère de correspondance comme « nuit ». Il affiche « 2 » comme nombre total de comptes pour l'entrée « nuit ».

db.Teacher.count({ 'shift.2' : 'nuit' })

De manière très similaire, la fonction count() peut également être appliquée aux champs imbriqués, comme par exemple le sous-champ « phy » du champ « sub » de la collection « Teacher ». Nous avons précisé les critères de correspondance à l'aide de l'opérateur « lte » indiquant des valeurs inférieures à 14 dans le sous-champ « phy ». La sortie de cette instruction affiche « 2 », soit 4 enregistrements avec une valeur inférieure à 14.

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

Conclusion

Ce guide a démontré et développé l'utilisation de l'agrégation $count de MongoDB avec plusieurs exemples de code. Les exemples incluent l'implication de l'agrégation de comptes pour récupérer le numéro de compte pour des enregistrements de valeur spécifiques et tous les enregistrements de champ à travers les collections. En outre, cela inclut l'utilisation de l'agrégation de comptes sur les champs de tableau et les champs intégrés (imbriqués). Au final, l'exemple de fonction count() a été inclus pour faire la différence entre l'utilisation de l'agrégation de comptage et la fonction count.