Resumen
En este laboratorio se practica con el framework de MongoDB y con la importación de datos. Se practicará con los principales operadores de agregación y el uso de pipelines.
-
Usar los operadores de agregación.
-
Combinar varias etapas de pipeline.
1. Recursos
Puedes obtener más información sobre cómo trabajar con MongoDB siguiendo estos tutoriales:
2. Actividades
-
Escribir una consulta que devuelva la cantidad de apartados postales por estado devolviendo dicha cantidad en un campo denominado
numberOfZips
Resultado:
{ "result" : [ …, { "_id" : "NV", "numberOfZips" : 104 }, { "_id" : "DE", "numberOfZips" : 53 }, { "_id" : "CA", "numberOfZips" : 1523 } …}
-
Escribir una consulta que devuelva la población por estado devolviendo dicho valor en un campo denominado
statePopulation
Resultado:
{ "result" : [ …, { "_id" : "NV", "statePopulation" : 1201833 }, { "_id" : "DE", "statePopulation" : 666168 }, { "_id" : "CA", "statePopulation" : 29760021 } …}
-
Escribir una consulta que devuelva un array
cities
con los nombres de ciudades por estado.Resultado:
… { "_id" : "CA", "cities" : [ "TRUCKEE", "SOUTH LAKE TAHOE", "TAHOMA", "HOMEWOOD", …
-
Escribir una consulta que devuelva la población de habitantes por estado y ciudad. Devolver la población en un campo denominado
cityPopulation
.Resultado:
… { "_id" : { "state" : "TN", "city" : "STRAWBERRY PLAIN" }, "cityPopulation" : 5600 }, { "_id" : { "state" : "AZ", "city" : "GOODYEAR" }, "cityPopulation" : 5819 } …
-
Escribir una consulta que devuelva la población en número de habitantes y la cantidad de códigos postales de las ciudades
SAN FRANCISCO
(del estado deCA
) yBOSTON
(del estadoMA
). Devolver la población en un campo denominadopopulation
y la cantidad de códigos postales ennumberOfZips
.Resultado:
{ "result" : [ { "_id" : "SAN FRANCISCO", "population" : 723993, "numberOfZips" : 26 }, { "_id" : "BOSTON", "population" : 91302, "numberOfZips" : 11 } ], "ok" : 1 }
-
Escribir una consulta que devuelva la población en número de habitantes por estado y ciudad de aquellas ciudades que tengan más de 1.000.000 de habitantes. Devolver la población en un campo denominado
cityPopulation
.Resultado:
{ "result" : [ { "_id" : { "state" : "TX", "city" : "HOUSTON" }, "cityPopulation" : 2095918 }, { "_id" : { "state" : "NY", "city" : "NEW YORK" }, "cityPopulation" : 1476790 }, …
-
A partir de la consulta anterior, escribir una consulta que devuelva las tres ciudades que tienen más población. Además, usando el operador
$concat
(consultar https://docs.mongodb.org/manual/reference/operator/aggregation/concat/ ), devolver las ciudades de esta forma (ciudad, estado), tal y como se muestra a continuación.Resultado:
{ "result" : [ { "cityPopulation" : 2452177, "city" : "CHICAGO, IL" }, { "cityPopulation" : 2300504, "city" : "BROOKLYN, NY" }, { "cityPopulation" : 2102295, "city" : "LOS ANGELES, CA" } ], "ok" : 1 }
-
Escribir una consulta que devuelva el Top 3 de ciudades que tengan más de 40 códigos postales. Usar el operador
$concat
para devolver las ciudades de esta forma (ciudad, estado), tal y como se muestra a continuación.Resultado:
{ "result" : [ { "numberOfZips" : 93, "city" : "HOUSTON, TX" }, { "numberOfZips" : 56, "city" : "LOS ANGELES, CA" }, { "numberOfZips" : 48, "city" : "PHILADELPHIA, PA" } ], "ok" : 1 }
-
A partir de la colección
bios
de la base de datostest
, escribir una consulta que devuelva la cantidad de premios por persona. Mostrar el listado en orden decreciente de número de premios.NotePuedes importar el archivo JSON
bios.json
disponible en SampleDatabases en una colecciónbios
.Resultado:
{ "result" : [ { "_id" : { "name" : "Grace", "lastname" : "Hopper" }, "awardsQuantity" : 4 }, { "_id" : { "name" : "John", "lastname" : "Backus" }, "awardsQuantity" : 4 }, …
-
Escribir una consulta que devuelva las celebridades que habiendo sido premiados con el
Turing Award
tengan más de tres premios. La consulta debe mostrar en un arrayawardsReceived
la lista de premios recibidos. La consulta también mostrará la cantidad de premios recibidos en un campo denominadonumberOfAwards
.Resultado:
{ "result" : [ { "_id" : { "name" : "John", "lastname" : "Backus" }, "awardsReceived" : [ "W.W. McDowell Award", "National Medal of Science", "Turing Award", "Draper Prize" ], "numberOfAwards" : 4 } ], "ok" : 1 }