Python MongoDB – $grupo (agregación)

MongoDB es una base de datos orientada a documentos de código abierto. MongoDB almacena datos en forma de pares clave-valor y es un programa de base de datos NoSQL. El término NoSQL significa no relacional. En este artículo, veremos el uso de $group en MongoDB usando Python.

$operación de grupo

En PyMongo, el método agregado se usa principalmente para procesar registros de datos de varios documentos y devuelve el resultado al usuario. Esto se basa en la tubería de procesamiento de datos e incluye múltiples etapas al final de las cuales obtenemos el resultado agregado. Una de las etapas del método agregado incluye $group . Esta operación agrupa los documentos de entrada de la colección por la expresión de identificador especificada ingresada por el usuario y luego le aplica la expresión del acumulador. Luego produce los documentos de salida. 

$group incluye lo siguiente-

  1. _id- Los documentos se agrupan según la expresión de id dada.
  2. campo (Opcional) – Incluye la expresión del acumulador que se aplica a los documentos incluidos.

Entendamos esto a través de algunos ejemplos.

Ejemplo 1:

Python3

from pymongo import MongoClient 
    
# creation of MongoClient 
client=MongoClient() 
    
# Connect with the portnumber and host 
client = MongoClient("mongodb://localhost:27017/") 
    
# Access database 
mydatabase = client['database'] 
    
# Access collection of the database 
mycollection=mydatabase['myTable'] 
writer_profiles = [
    {"_id":1, "user":"Amit", "title":"Python", "comments":5},
    {"_id":2, "user":"Drew",  "title":"JavaScript", "comments":15},
    {"_id":3, "user":"Amit",  "title":"C++", "comments":6},
    {"_id":4, "user":"Drew",  "title":"MongoDB", "comments":2},
    {"_id":5, "user":"Cody",  "title":"Perl", "comments":9}]
  
mycollection.insert_many(writer_profiles)
agg_result= mycollection.aggregate(
    [{
    "$group" : 
        {"_id" : "$user", 
         "num_tutorial" : {"$sum" : 1}
         }}
    ])
for i in agg_result:
    print(i)

Producción:

{'_id': 'Cody', 'num_tutorial': 1}
{'_id': 'Drew', 'num_tutorial': 2}
{'_id': 'Amit', 'num_tutorial': 2}

En el ejemplo anterior, los documentos se agrupan sobre la base de la expresión $usuario , y luego el campo num_tutorial incluye el operador acumulador $suma que calcula el número de tutoriales de cada usuario. 

Ejemplo 2:

Python3

from pymongo import MongoClient 
    
# creation of MongoClient 
client=MongoClient() 
    
# Connect with the portnumber and host 
client = MongoClient("mongodb://localhost:27017/") 
    
# Access database 
mydatabase = client['database4'] 
    
# Access collection of the database 
mycollection=mydatabase['myTable'] 
writer_profiles = [
    {"_id":1, "user":"Amit", "title":"Python", "comments":8},
    {"_id":2, "user":"Drew",  "title":"JavaScript", "comments":15},
    {"_id":3, "user":"Amit",  "title":"C++", "comments":6},
    {"_id":4, "user":"Drew",  "title":"MongoDB", "comments":2},
    {"_id":5, "user":"Cody",  "title":"MongoDB", "comments":16}]
  
mycollection.insert_many(writer_profiles)
agg_result= mycollection.aggregate(
    [{
    "$group" : 
        {"_id" : "$title",  
         "total" : {"$sum" : 1}
         }}
    ])
for i in agg_result:
    print(i)

Producción:

{'_id': 'MongoDB', 'total': 2}
{'_id': 'C++', 'total': 1}
{'_id': 'JavaScript', 'total': 1}
{'_id': 'Python', 'total': 1}

En este ejemplo, los documentos se agrupan por la expresión $título y el campo total incluye el operador acumulador $suma que calcula el número de artículos de cada título. 

Publicación traducida automáticamente

Artículo escrito por gauravbabbar25 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *