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-
- _id- Los documentos se agrupan según la expresión de id dada.
- 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