opération d'agrégation mongoDB _aggregate() induction

opérations d'agrégation mongoDB


Les pipelines couramment utilisés pour l'agrégation mongoDB sont

  • $match : filtrez le pipeline pour filtrer les données et ne sortez que les documents qui remplissent les conditions
  • $group : regroupe les documents de la collection, qui peuvent être utilisés pour des résultats statistiques
  • Pipeline de carte $project, sortie de carte

  • $sort : trier le pipeline, trier les documents d'entrée et les sortir
  • $limit : limite le pipeline, limite les documents renvoyés par le pipeline d'agrégation
  • $skip : ignore le pipeline, ignore le nombre de documents spécifié et renvoie les documents restants

1. Préparer un ensemble de données

db.data.insertMany([{name:"Tom", city:"cityA",type:"aaa",num:609,age:18},
{name : "allen", city :"cityC", type: "bbb", num : 549,age:20},
{name :"jerry", city :"cityA", type :"bbb", num : 593,age:22},
{name :"frank", city : "cityB", type:"aaa", num : 657,age:21},
{name :"jack", city : "cityC", type:"aaa", num : 620,age:18},
{name :"alice", city : "cityB", type:"ccc", num : 584,age:20},
{name :"marry", city:"cityA", type:"bbb", num : 599,age:22}
])
db.data.find()

insérez la description de l'image ici

2. Pipeline de regroupement $group

2.1 Groupe unique statistique

Regroupez les villes et trouvez la moyenne du nombre pour chaque groupe.

db.data.aggregate({$group:{_id:'$city',avg_num:{$avg:'$num'}}})

insérez la description de l'image ici

2.2 Statistiques sur plusieurs groupes

db.data.aggregate({$group:{_id:'$city',avg_num:{$avg:'$num'},avg_age:{$avg:'$age'}}})

insérez la description de l'image ici


3. Pipeline de filtrage $match

Le résultat de son action peut être transmis à ce dernier pipeline.

Regrouper les villes dont la ville n'est pas "villeC" (filtrer ""villeC") et le nombre moyen pour chaque groupe.

db.data.aggregate({$match:{city:{$ne:"cityC"}}},{$group:{_id:'$city',avg_num:{$avg:'$num'}}})

insérez la description de l'image ici
Regroupez les villes avec un âge ≥ 20 (filtrez "" cityC ") et trouvez la moyenne de num dans chaque groupe.

db.data.aggregate({$match:{age:{$gte:20}}},{$group:{_id:'$city',avg_num:{$avg:'$num'}}})

insérez la description de l'image ici

dans,

  • _id est la base du regroupement

  • avg_num est le nom du champ nouvellement défini

  • $avg est l'expression de la méthode d'évaluation, voici l'expression de la moyenne

  • grouper par spécifié par '$city'

  • '$num' spécifie la valeur requise du champ


Augmenter le nombre de statistiques

Si vous voulez compter le nombre de chaque groupe de données, vous pouvez utiliser $sum pour y parvenir.

La fonction de $sum est de trouver la somme d'un certain champ. Lorsque vous comptez avec $sum, comme le nombre de personnes dans chaque ville, cela peut s'écrire :

db.data.aggregate({$group:{_id:'$city',count:{$sum:1}}})

insérez la description de l'image ici

Autrement dit, le champ, la constante 1, est compté. S'il est écrit sous la forme {$sum:2}, le résultat du comptage est 4,4,6.

4. Pipeline de mappage $project

db.data.aggregate({$group:{_id:'$city',avg_num:{$avg:'$num'},avg_age:{$avg:'$age'}}},{$project:{avg_num:1}})

insérez la description de l'image ici
Comme le montre la figure, le résultat n'affiche plus avg_age, seuls _id et avg_num sont affichés.


5.$trier $ignorer $limite

  • Trier par âge dans l'ordre décroissant, ignorer le premier et prendre les trois premières données
db.data.aggregate({$sort:{age:-1}},{$skip:1},{$limit:3})

insérez la description de l'image ici

  • Trier par âge dans l'ordre décroissant, prendre les trois premières données, sauter la première,
db.data.aggregate({$sort:{age:-1}},{$limit:3},{$skip:1})

insérez la description de l'image ici

  • Prenez les trois premières données, ignorez la première, puis triez par ordre décroissant
db.data.aggregate({$limit:3},{$skip:1},{$sort:{age:-1}})

insérez la description de l'image ici
La manière d'écrire le pipeline ne tient pas compte du problème de priorité, et il est exécuté séquentiellement de gauche à droite.

6. Supplément expressions courantes

$sum : calcule la somme, $sum:1 signifie un double comptage
$avg : calcule la moyenne
$min : obtient la valeur minimale
$max : obtient la valeur maximale
$push : insère la valeur dans un tableau dans le document de résultat Medium
$first : Récupère les données du premier document selon l'ordre des documents ressources
$last : Récupère les données du dernier document selon l'ordre des documents ressources

Je suppose que tu aimes

Origine blog.csdn.net/weixin_48964486/article/details/123631750
conseillé
Classement