Tiempo estimado de finalización: 5 minutos
Puedes ejecutar operaciones utilizando el languaje del query de MongoDB (MQL), que incluye la mayoría, pero no todos, de los comandos estándar del servidor. Para conocer qué operaciones de MQL son compatibles, consulta la documentación de soporte de MQL .
Nota Los conjuntos de datos de muestra de Atlas Data Federation son de solo lectura.
Para completar esta parte del tutorial, deberás haber completado:
Debe estar conectado a su instancia federada de base de datos con el MongoDB Shell antes de ejecutar las siguientes queries.
Estas queries de ejemplo varían dependiendo de si utilizaste el asistente de Alimentación de Sistemas Secundarios , Exploración con Datos de Muestra o Query de Datos en Diferentes Clústeres para desplegar tu instancia de base de datos federada. Haga clic en la pestaña correspondiente para ver los ejemplos respectivos.
Descendente
Datos de muestra
A través de clústeres
Si aún no lo has hecho, completa lo siguiente para ejecutar las siguientes consultas exitosamente:
Cargar datos de muestra en el clúster de Atlas que utilizan como fuente de datos para la instancia de base de datos federada.
AirBnb
Análisis
Mflix
Formación
Antes de ejecutar las consultas, cambia a la base de datos sample_airbnb:
Encuentra el número de ofertas de AirBnB con 3 dormitorios y una puntuación alta de revisión:
1 db.listingsAndReviews.aggregate([ { $match: { "bedrooms" : 3 , "review_scores.review_scores_rating" : { $gt: 79 } } } , { $count: "numProperties" } ] )
1 { 2 "numProperties" : 295 3 }
Encuentra propiedades con 3 habitaciones e incluye únicamente los campos name y bedrooms en los resultados. Ordena los documentos devueltos por la calificación de revisión de los clientes. Limita el número de documentos devueltos a 5:
1 db.listingsAndReviews.find({ "bedrooms" : 3 } , { "name" : 1 , "bedrooms" : 1 } ).sort({ review_scores_rating: -1 } ).limit(5 )
1 [ 2 { 3 _id: '20045679 ', 4 name: 'House Near Espinho/Santa Maria Feira', 5 bedrooms: Long("3" ) 6 } , 7 { 8 _id: '19760228 ', 9 name: 'Apartment Salva - 3 bedroom in Poble Sec', 10 bedrooms: Long("3" ) 11 } , 12 { 13 _id: '19768051 ', 14 name: 'Ultra Modern Pool House Maroubra', 15 bedrooms: Long("3" ) 16 } , 17 { 18 _id: '19877706 ', 19 name: 'Big 3 Bedroom Garden Level Apartment Near Subway', 20 bedrooms: Long("3" ) 21 } , 22 { 23 _id: '6291063 ', 24 name: 'Beautiful Tropical Oasis near beach in Kailua', 25 bedrooms: Long("3" ) 26 } 27 ]
Antes de ejecutar las consultas, cambia a la base de datos sample_analytics:
Encuentra usuarios que han comprado Commodity con un límite de 10000. Limitar el número de documentos devueltos a 3:
1 db.accounts.find({ "limit" : { $eq: 10000 } , "products" : "Commodity" } ).limit(3 )
1 { 2 "_id" : ObjectId("5ca4bbc7a2dd94ee5816238d" ), 3 "account_id" : 557378 , 4 "limit" : 10000 , 5 "products" : [ 6 "InvestmentStock" , 7 "Commodity" , 8 "Brokerage" , 9 "CurrencyService" 10 ] 11 } 12 { 13 "_id" : ObjectId("5ca4bbc7a2dd94ee58162390" ), 14 "account_id" : 278603 , 15 "limit" : 10000 , 16 "products" : [ 17 "Commodity" , 18 "InvestmentStock" 19 ] 20 } 21 { 22 "_id" : ObjectId("5ca4bbc7a2dd94ee5816239b" ), 23 "account_id" : 870466 , 24 "limit" : 10000 , 25 "products" : [ 26 "Derivatives" , 27 "Brokerage" , 28 "Commodity" , 29 "InvestmentStock" 30 ] 31 }
Encuentra clientes cuya fecha de nacimiento sea anterior a 1990-01-01 y limita el número de documentos devueltos a 5:
1 db.customers.find({ "birthdate" : { $lt: ISODate("1990-01-01T22:15:34.000+00:00" )} } , { "name" : 1 , "birthdate" : 1 , "email" : 1 } ).limit(5 )
1 { 2 "_id" : ObjectId("5ca4bbcea2dd94ee58162a6a" ), 3 "name" : "Katherine David" , 4 "birthdate" : ISODate("1988-06-20T22:15:34Z" ), 5 "email" : "timothy78@hotmail.com" 6 } 7 { 8 "_id" : ObjectId("5ca4bbcea2dd94ee58162a6c" ), 9 "name" : "Brad Cardenas" , 10 "birthdate" : ISODate("1977-05-06T21:57:35Z" ), 11 "email" : "dustin37@yahoo.com" 12 } 13 { 14 "_id" : ObjectId("5ca4bbcea2dd94ee58162a74" ), 15 "name" : "Dr. Angela Brown" , 16 "birthdate" : ISODate("1977-06-19T20:35:52Z" ), 17 "email" : "michaelespinoza@gmail.com" 18 } 19 { 20 "_id" : ObjectId("5ca4bbcea2dd94ee58162a76" ), 21 "name" : "Lauren Clark" , 22 "birthdate" : ISODate("1980-10-28T16:25:59Z" ), 23 "email" : "briannafrost@yahoo.com" 24 } 25 { 26 "_id" : ObjectId("5ca4bbcea2dd94ee58162a77" ), 27 "name" : "Jacqueline Haynes" , 28 "birthdate" : ISODate("1982-09-01T07:12:57Z" ), 29 "email" : "virginia36@hotmail.com" 30 }
Encontrar detalles de transacciones para el usuario cuyo ID de cuenta es 557378 y utilizar la etapa $sort para ordenar en el campo transactions.symbol:
1 db.accounts.aggregate([ { $match: { "account_id" : 557378 } } , { $sort: { "transactions.symbol" : -1 } } ] )
1 { 2 "_id" : ObjectId("5ca4bbc7a2dd94ee5816238d" ), 3 "account_id" : 557378 , 4 "limit" : 10000 , 5 "products" : [ "InvestmentStock" , "Commodity" , "Brokerage" , "CurrencyService" ] 6 }
Antes de ejecutar las consultas, cambia a la base de datos sample_mflix:
Encuentra todas las películas entre los años 2010 y 2015 e incluye solo los campos _id, title y year en los resultados. Limite el número de documentos devueltos a 5.
1 db.movies.find({ "type" : "movie" , "year" : { $gt: 2010 , $lt: 2015 } } , { "title" : 1 , "year" : 1 } ).limit(5 )
1 { 2 "_id" : ObjectId("573a13b8f29313caabd4c8c5" ), 3 "year" : 2011 , 4 "title" : "Thor" 5 } 6 { 7 "_id" : ObjectId("573a13b0f29313caabd34a3e" ), 8 "year" : 2011 , 9 "title" : "Cowboys & Aliens" 10 } 11 { 12 "_id" : ObjectId("573a13b8f29313caabd4ca3f" ), 13 "title" : "Red Dog" , 14 "year" : 2011 15 } 16 { 17 "_id" : ObjectId("573a13b8f29313caabd4d58c" ), 18 "title" : "Jack and Jill" , 19 "year" : 2011 20 } 21 { 22 "_id" : ObjectId("573a13b8f29313caabd4d5b5" ), 23 "year" : 2011 , 24 "title" : "Take Me Home Tonight" 25 }
Encuentra los detalles de las sesiones para un usuario especificado por su ID.
1 db.sessions.find({ "user_id" : "t3qulfeem@kwiv5.6ur" } )
1 { 2 "_id" : ObjectId("5a97f9c91c807bb9c6eb5fb4" ), 3 "user_id" : "t3qulfeem@kwiv5.6ur" , 4 "jwt" : "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NieyJpYXQiOjE1MTk5MDkzMjEsIm5iZiI6MTUxOTkwOTMyMSwianRpIjoiNmJlZDAwMWYtNTFiYi00NzVhLTgAtMDcwNGE5Mjk0MWZlIiwiZXhwIjoxNTE5OTEwMjIxLCJpZGVudGl0eSI6eyJlbWFpbCI6InQzcXVsZmVlbd2l2NS42dXIiLCJuYW1lIjoiM2lveHJtZnF4IiwicGFzc3dvcmQiOm51bGx9LCJmcmVzaCI6ZmFsc2UsInRUiOiJhY2Nlc3MiLCJ1c2VyX2NsYWltcyI6eyJ1c2VyIjp7ImVtYWlsIjoidDNxdWxmZWVtQGt3aXY1LjZ1cIm5hbWUiOiIzaW94cm1mcXgiLCJwYXNzd29yZCI6bnVsbH19ejtr_NyZyBronWMKuE0RFTjWej--T0zGrdc_iymGtVs" 5 }
Encuentra el teatro especificado por su id y zipcode.
1 db.theaters.findOne({ $and: [ { "_id" : ObjectId("59a47286cfa9a3a73e51e763" )} , { "location.address.zipcode" : "93933" } ] } )
1 { 2 "_id" : ObjectId("59a47286cfa9a3a73e51e763" ), 3 "theaterId" : 1061 , 4 "location" : { 5 "address" : { 6 "street1" : "101 General Stillwell Dr" , 7 "city" : "Marina" , 8 "state" : "CA" , 9 "zipcode" : "93933" 10 } , 11 "geo" : { 12 "type" : "Point" , 13 "coordinates" : [ 14 -121.81196 , 15 36.66708 16 ] 17 } 18 } 19 }
Encuentra a todos los usuarios cuyo apellido sea Lannister y limita el número de documentos devueltos a 5.
1 db.users.find({ name: /Lannister/ } ).limit(5 )
1 { 2 "_id" : ObjectId("59b99db5cfa9a34dcd7885b8" ), 3 "name" : "Jaime Lannister" , 4 "email" : "nikolaj_coster-waldau@gameofthron.es" , 5 "password" : "$2b$12$6vz7wiwO.EI5Rilvq1zUc./9480gb1uPtXcahDxIadgyC3PS8XCUK" 6 } 7 { 8 "_id" : ObjectId("59b99db6cfa9a34dcd7885ba" ), 9 "name" : "Cersei Lannister" , 10 "email" : "lena_headey@gameofthron.es" , 11 "password" : "$2b$12$FExjgr7CLhNCa.oUsB9seub8mqcHzkJCFZ8heMc8CeIKOZfeTKP8m" 12 } 13 { 14 "_id" : ObjectId("59b99dbdcfa9a34dcd7885c7" ), 15 "name" : "Tyrion Lannister" , 16 "email" : "peter_dinklage@gameofthron.es" , 17 "password" : "$2b$12$xtHwQNXYlQzP2REobUDlzuQimjzBlXrTx1GnwP.xkfULeuuUpRxa2" 18 } 19 { 20 "_id" : ObjectId("59b99dc2cfa9a34dcd7885d2" ), 21 "name" : "Tywin Lannister" , 22 "email" : "charles_dance@gameofthron.es" , 23 "password" : "$2b$12$/i04T5yEJvmsBhF0Jd.kJOk3ZhRzezbTU7ASEM5o43Xxsa4o6IgEy" 24 } 25 { 26 "_id" : ObjectId("59b99dcecfa9a34dcd7885ea" ), 27 "name" : "Lancel Lannister" , 28 "email" : "eugene_simon@gameofthron.es" , 29 "password" : "$2b$12$mNWiHoOqOWQser3s6ezqZeTU5vhskTq.K7xkeTA2P.CIfoWsHvonO" 30 }
Antes de ejecutar las consultas, cambia a la base de datos sample_training:
Encuentra todos los estados con una población mayor a 10 millones.
1 db.zips.aggregate([ { $group: { _id: "$state" , totalPop: { $sum: "$pop" } } } , { $match: { totalPop: { $gte: 10 *1000 *1000 } } } ] )
1 { "_id" : "NY" , "totalPop" : 17990455 } 2 { "_id" : "FL" , "totalPop" : 12937926 } 3 { "_id" : "PA" , "totalPop" : 11881643 } 4 { "_id" : "CA" , "totalPop" : 29760021 } 5 { "_id" : "TX" , "totalPop" : 16986510 } 6 { "_id" : "IL" , "totalPop" : 11430602 } 7 { "_id" : "OH" , "totalPop" : 10847115 }
Encuentra todos los viajes realizados por clientes que duraron menos de 70 minutos.
1 db.trips.find({ "tripduration" : { "$lte" : 70 } , "usertype" : { "$eq" : "Customer" } } )
1 { 2 "_id" : ObjectId("572bb8232b288919b68af7cd" ), 3 "tripduration" : 66 , 4 "start station id" : 460 , 5 "start station name" : "S 4 St & Wythe Ave" , 6 "end station id" : 460 , 7 "end station name" : "S 4 St & Wythe Ave" , 8 "bikeid" : 23779 , 9 "usertype" : "Customer" , 10 "birth year" : "" , 11 "start station location" : { 12 "type" : "Point" , 13 "coordinates" : [ 14 -73.96590294 , 15 40.71285887 16 ] 17 } , 18 "end station location" : { 19 "type" : "Point" , 20 "coordinates" : [ 21 -73.96590294 , 22 40.71285887 23 ] 24 } , 25 "start time" : ISODate("2016-01-02T11:49:11Z" ), 26 "stop time" : ISODate("2016-01-02T11:50:18Z" ) 27 }
Haz clic y ejecuta las consultas en las pestañas correspondientes para los conjuntos de datos de muestra incluidos en tu instancia federada de base de datos.
AirBnb
Análisis
Mflix
Formación
Antes de ejecutar las consultas, cambia a la base de datos airbnb:
Encuentra el número de ofertas de AirBnB con 3 dormitorios y una puntuación alta de revisión:
1 db.listingsAndReviews.aggregate([ { $match: { "bedrooms" : 3 , "review_scores.review_scores_rating" : { $gt: 79 } } } , { $count: "numProperties" } ] )
1 { 2 "numProperties" : 295 3 }
Encuentra propiedades con 3 habitaciones e incluye únicamente los campos name y bedrooms en los resultados. Ordena los documentos devueltos por la calificación de revisión de los clientes. Limita el número de documentos devueltos a 5:
1 db.listingsAndReviews.find({ "bedrooms" : 3 } , { "name" : 1 , "bedrooms" : 1 } ).sort({ review_scores_rating: -1 } ).limit(5 )
1 [ 2 { 3 _id: '20045679 ', 4 name: 'House Near Espinho/Santa Maria Feira', 5 bedrooms: Long("3" ) 6 } , 7 { 8 _id: '19760228 ', 9 name: 'Apartment Salva - 3 bedroom in Poble Sec', 10 bedrooms: Long("3" ) 11 } , 12 { 13 _id: '19768051 ', 14 name: 'Ultra Modern Pool House Maroubra', 15 bedrooms: Long("3" ) 16 } , 17 { 18 _id: '19877706 ', 19 name: 'Big 3 Bedroom Garden Level Apartment Near Subway', 20 bedrooms: Long("3" ) 21 } , 22 { 23 _id: '6291063 ', 24 name: 'Beautiful Tropical Oasis near beach in Kailua', 25 bedrooms: Long("3" ) 26 } 27 ]
Antes de ejecutar las consultas, cambia a la base de datos analytics:
Encuentra usuarios que han comprado Commodity con un límite de 10000. Limitar el número de documentos devueltos a 3:
1 db.accounts.find({ "limit" : { $eq: 10000 } , "products" : "Commodity" } ).limit(3 )
1 { 2 "_id" : ObjectId("5ca4bbc7a2dd94ee5816238d" ), 3 "account_id" : 557378 , 4 "limit" : 10000 , 5 "products" : [ 6 "InvestmentStock" , 7 "Commodity" , 8 "Brokerage" , 9 "CurrencyService" 10 ] 11 } 12 { 13 "_id" : ObjectId("5ca4bbc7a2dd94ee58162390" ), 14 "account_id" : 278603 , 15 "limit" : 10000 , 16 "products" : [ 17 "Commodity" , 18 "InvestmentStock" 19 ] 20 } 21 { 22 "_id" : ObjectId("5ca4bbc7a2dd94ee5816239b" ), 23 "account_id" : 870466 , 24 "limit" : 10000 , 25 "products" : [ 26 "Derivatives" , 27 "Brokerage" , 28 "Commodity" , 29 "InvestmentStock" 30 ] 31 }
Encuentra clientes cuya fecha de nacimiento sea anterior a 1990-01-01 y limita el número de documentos devueltos a 5:
1 db.customers.find({ "birthdate" : { $lt: ISODate("1990-01-01T22:15:34.000+00:00" )} } , { "name" : 1 , "birthdate" : 1 , "email" : 1 } ).limit(5 )
1 { 2 "_id" : ObjectId("5ca4bbcea2dd94ee58162a6a" ), 3 "name" : "Katherine David" , 4 "birthdate" : ISODate("1988-06-20T22:15:34Z" ), 5 "email" : "timothy78@hotmail.com" 6 } 7 { 8 "_id" : ObjectId("5ca4bbcea2dd94ee58162a6c" ), 9 "name" : "Brad Cardenas" , 10 "birthdate" : ISODate("1977-05-06T21:57:35Z" ), 11 "email" : "dustin37@yahoo.com" 12 } 13 { 14 "_id" : ObjectId("5ca4bbcea2dd94ee58162a74" ), 15 "name" : "Dr. Angela Brown" , 16 "birthdate" : ISODate("1977-06-19T20:35:52Z" ), 17 "email" : "michaelespinoza@gmail.com" 18 } 19 { 20 "_id" : ObjectId("5ca4bbcea2dd94ee58162a76" ), 21 "name" : "Lauren Clark" , 22 "birthdate" : ISODate("1980-10-28T16:25:59Z" ), 23 "email" : "briannafrost@yahoo.com" 24 } 25 { 26 "_id" : ObjectId("5ca4bbcea2dd94ee58162a77" ), 27 "name" : "Jacqueline Haynes" , 28 "birthdate" : ISODate("1982-09-01T07:12:57Z" ), 29 "email" : "virginia36@hotmail.com" 30 }
Encontrar detalles de transacciones para el usuario cuyo ID de cuenta es 557378 y utilizar la etapa $sort para ordenar en el campo transactions.symbol:
1 db.accounts.aggregate([ { $match: { "account_id" : 557378 } } , { $sort: { "transactions.symbol" : -1 } } ] )
1 { 2 "_id" : ObjectId("5ca4bbc7a2dd94ee5816238d" ), 3 "account_id" : 557378 , 4 "limit" : 10000 , 5 "products" : [ "InvestmentStock" , "Commodity" , "Brokerage" , "CurrencyService" ] 6 }
Antes de ejecutar las consultas, cambia a la base de datos mflix:
Encuentra todas las películas entre los años 2010 y 2015 e incluye solo los campos _id, title y year en los resultados. Limite el número de documentos devueltos a 5.
1 db.movies.find({ "type" : "movie" , "year" : { $gt: 2010 , $lt: 2015 } } , { "title" : 1 , "year" : 1 } ).limit(5 )
1 { 2 "_id" : ObjectId("573a13b8f29313caabd4c8c5" ), 3 "year" : 2011 , 4 "title" : "Thor" 5 } 6 { 7 "_id" : ObjectId("573a13b0f29313caabd34a3e" ), 8 "year" : 2011 , 9 "title" : "Cowboys & Aliens" 10 } 11 { 12 "_id" : ObjectId("573a13b8f29313caabd4ca3f" ), 13 "title" : "Red Dog" , 14 "year" : 2011 15 } 16 { 17 "_id" : ObjectId("573a13b8f29313caabd4d58c" ), 18 "title" : "Jack and Jill" , 19 "year" : 2011 20 } 21 { 22 "_id" : ObjectId("573a13b8f29313caabd4d5b5" ), 23 "year" : 2011 , 24 "title" : "Take Me Home Tonight" 25 }
Encuentra los detalles de las sesiones para un usuario especificado por su ID.
1 db.sessions.find({ "user_id" : "t3qulfeem@kwiv5.6ur" } )
1 { 2 "_id" : ObjectId("5a97f9c91c807bb9c6eb5fb4" ), 3 "user_id" : "t3qulfeem@kwiv5.6ur" , 4 "jwt" : "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NieyJpYXQiOjE1MTk5MDkzMjEsIm5iZiI6MTUxOTkwOTMyMSwianRpIjoiNmJlZDAwMWYtNTFiYi00NzVhLTgAtMDcwNGE5Mjk0MWZlIiwiZXhwIjoxNTE5OTEwMjIxLCJpZGVudGl0eSI6eyJlbWFpbCI6InQzcXVsZmVlbd2l2NS42dXIiLCJuYW1lIjoiM2lveHJtZnF4IiwicGFzc3dvcmQiOm51bGx9LCJmcmVzaCI6ZmFsc2UsInRUiOiJhY2Nlc3MiLCJ1c2VyX2NsYWltcyI6eyJ1c2VyIjp7ImVtYWlsIjoidDNxdWxmZWVtQGt3aXY1LjZ1cIm5hbWUiOiIzaW94cm1mcXgiLCJwYXNzd29yZCI6bnVsbH19ejtr_NyZyBronWMKuE0RFTjWej--T0zGrdc_iymGtVs" 5 }
Encuentra el teatro especificado por su id y zipcode.
1 db.theaters.findOne({ $and: [ { "_id" : ObjectId("59a47286cfa9a3a73e51e763" )} , { "location.address.zipcode" : "93933" } ] } )
1 { 2 "_id" : ObjectId("59a47286cfa9a3a73e51e763" ), 3 "theaterId" : 1061 , 4 "location" : { 5 "address" : { 6 "street1" : "101 General Stillwell Dr" , 7 "city" : "Marina" , 8 "state" : "CA" , 9 "zipcode" : "93933" 10 } , 11 "geo" : { 12 "type" : "Point" , 13 "coordinates" : [ 14 -121.81196 , 15 36.66708 16 ] 17 } 18 } 19 }
Encuentra a todos los usuarios cuyo apellido sea Lannister y limita el número de documentos devueltos a 5.
1 db.users.find({ name: /Lannister/ } ).limit(5 )
1 { 2 "_id" : ObjectId("59b99db5cfa9a34dcd7885b8" ), 3 "name" : "Jaime Lannister" , 4 "email" : "nikolaj_coster-waldau@gameofthron.es" , 5 "password" : "$2b$12$6vz7wiwO.EI5Rilvq1zUc./9480gb1uPtXcahDxIadgyC3PS8XCUK" 6 } 7 { 8 "_id" : ObjectId("59b99db6cfa9a34dcd7885ba" ), 9 "name" : "Cersei Lannister" , 10 "email" : "lena_headey@gameofthron.es" , 11 "password" : "$2b$12$FExjgr7CLhNCa.oUsB9seub8mqcHzkJCFZ8heMc8CeIKOZfeTKP8m" 12 } 13 { 14 "_id" : ObjectId("59b99dbdcfa9a34dcd7885c7" ), 15 "name" : "Tyrion Lannister" , 16 "email" : "peter_dinklage@gameofthron.es" , 17 "password" : "$2b$12$xtHwQNXYlQzP2REobUDlzuQimjzBlXrTx1GnwP.xkfULeuuUpRxa2" 18 } 19 { 20 "_id" : ObjectId("59b99dc2cfa9a34dcd7885d2" ), 21 "name" : "Tywin Lannister" , 22 "email" : "charles_dance@gameofthron.es" , 23 "password" : "$2b$12$/i04T5yEJvmsBhF0Jd.kJOk3ZhRzezbTU7ASEM5o43Xxsa4o6IgEy" 24 } 25 { 26 "_id" : ObjectId("59b99dcecfa9a34dcd7885ea" ), 27 "name" : "Lancel Lannister" , 28 "email" : "eugene_simon@gameofthron.es" , 29 "password" : "$2b$12$mNWiHoOqOWQser3s6ezqZeTU5vhskTq.K7xkeTA2P.CIfoWsHvonO" 30 }
Antes de ejecutar las consultas, cambia a la base de datos training:
Encuentra todos los viajes que estén a más de 5 y cuesten 50 o menos.
1 db.trips.find({ "fare_amount" : { "$lte" : "50" } , "trip_distance" : { "$gte" : "5" } } ).count()
Encuentra cuántos viajes incluyeron cuatro o más pasajeros.
1 db.trips.find({ "passenger_count" : { "$gte" : 4 } } ).count()
Si aún no lo has hecho, carga datos de muestra en los clústeres de Atlas que estás utilizando como fuentes de datos para tu instancia de base de datos federada antes de ejecutar estas consultas.
AirBnb
Análisis
Mflix
Formación
Antes de ejecutar las consultas, cambia a la base de datos VirtualDatabase:
Encuentra el número de ofertas de AirBnB con 3 dormitorios y una puntuación alta de revisión:
1 db.VirtualCollection.aggregate([ { $match: { "bedrooms" : 3 , "review_scores.review_scores_rating" : { $gt: 79 } } } , { $count: "numProperties" } ] )
1 { 2 "numProperties" : 295 3 }
Encuentra propiedades con 3 habitaciones e incluye únicamente los campos name y bedrooms en los resultados. Ordena los documentos devueltos por la calificación de revisión de los clientes. Limita el número de documentos devueltos a 5:
1 db.VirtualCollection.find({ "bedrooms" : 3 } , { "name" : 1 , "bedrooms" : 1 } ).sort({ review_scores_rating: -1 } ).limit(5 )
1 [ 2 { 3 _id: '20045679 ', 4 name: 'House Near Espinho/Santa Maria Feira', 5 bedrooms: Long("3" ) 6 } , 7 { 8 _id: '19760228 ', 9 name: 'Apartment Salva - 3 bedroom in Poble Sec', 10 bedrooms: Long("3" ) 11 } , 12 { 13 _id: '19768051 ', 14 name: 'Ultra Modern Pool House Maroubra', 15 bedrooms: Long("3" ) 16 } , 17 { 18 _id: '19877706 ', 19 name: 'Big 3 Bedroom Garden Level Apartment Near Subway', 20 bedrooms: Long("3" ) 21 } , 22 { 23 _id: '6291063 ', 24 name: 'Beautiful Tropical Oasis near beach in Kailua', 25 bedrooms: Long("3" ) 26 } 27 ]
Antes de ejecutar las consultas, cambia a la base de datos VirtualDatabase:
Encuentra usuarios que han comprado Commodity con un límite de 10000. Limitar el número de documentos devueltos a 3:
1 db.VirtualCollection.find({ "limit" : { $eq: 10000 } , "products" : "Commodity" } ).limit(3 )
1 { 2 "_id" : ObjectId("5ca4bbc7a2dd94ee581623a3" ), 3 "account_id" : 775273 , 4 "limit" : 10000 , 5 "products" : [ 6 "Brokerage" , 7 "Commodity" , 8 "InvestmentStock" 9 ] 10 } 11 { 12 "_id" : ObjectId("5ca4bbc7a2dd94ee581623a9" ), 13 "account_id" : 324287 , 14 "limit" : 10000 , 15 "products" : [ 16 "Commodity" , 17 "CurrencyService" , 18 "Derivatives" , 19 "InvestmentStock" 20 ] 21 } 22 { 23 "_id" : ObjectId("5ca4bbc7a2dd94ee581623b2" ), 24 "account_id" : 209363 , 25 "limit" : 10000 , 26 "products" : [ 27 "Brokerage" , 28 "InvestmentStock" , 29 "Commodity" , 30 "Derivatives" 31 ] 32 }
Encuentra clientes cuya fecha de nacimiento sea anterior a 1990-01-01 y limita el número de documentos devueltos a 3:
1 db.VirtualCollection.find({ "birthdate" : { $lt: ISODate ("1990-01-01T22:15:34.000+00:00" )} } , { "name" : 1 , "birthdate" : 1 , "email" : 1 } ).limit(3 )
1 { 2 "_id" : ObjectId("5ca4bbcea2dd94ee58162a6a" ), 3 "name" : "Katherine David" , 4 "birthdate" : ISODate("1988-06-20T22:15:34Z" ), 5 "email" : "timothy78@hotmail.com" 6 } 7 { 8 "_id" : ObjectId("5ca4bbcea2dd94ee58162a6c" ), 9 "name" : "Brad Cardenas" , 10 "birthdate" : ISODate("1977-05-06T21:57:35Z" ), 11 "email" : "dustin37@yahoo.com" 12 } 13 { 14 "_id" : ObjectId("5ca4bbcea2dd94ee58162a75" ), 15 "name" : "John Vega" , 16 "birthdate" : ISODate("1983-09-21T03:22:18Z" ), 17 "email" : "ryanpena@yahoo.com" 18 }
Encontrar detalles de transacciones para el usuario cuyo ID de cuenta es 557378 y utilizar la etapa $sort para ordenar en el campo transactions.symbol:
1 db.VirtualCollection.aggregate([ { $match: { "account_id" : 557378 } } , { $sort: { "transactions.symbol" : -1 } } ] )
1 { 2 "_id" : ObjectId("5ca4bbc1a2dd94ee58161cb3" ), 3 "account_id" : 557378 , 4 "transaction_count" : 56 , 5 "bucket_start_date" : ISODate("1990-06-11T00:00:00Z" ), 6 "bucket_end_date" : ISODate("2016-11-06T00:00:00Z" ), 7 "transactions" : [ 8 { 9 "date" : ISODate("2006-10-06T00:00:00Z" ), 10 "amount" : 2561 , 11 "transaction_code" : "sell" , 12 "symbol" : "adbe" , 13 "price" : "38.236619210617988073863671161234378814697265625" , 14 "total" : "97923.98179839266745716486184" 15 } , 16 { 17 "date" : ISODate("2000-06-19T00:00:00Z" ), 18 "amount" : 9153 , 19 "transaction_code" : "sell" , 20 "symbol" : "adbe" , 21 "price" : "31.12236744839008650842515635304152965545654296875" , 22 "total" : "284863.0292551144618116154561" 23 } , 24 { 25 "date" : ISODate("2013-11-06T00:00:00Z" ), 26 "amount" : 18 , 27 "transaction_code" : "buy" , 28 "symbol" : "amzn" , 29 "price" : "356.639066345529272439307533204555511474609375" , 30 "total" : "6419.503194219526903907535598" 31 } , 32 ...
Antes de ejecutar las consultas, cambia a la base de datos VirtualDatabase:
Encuentra todas las películas entre los años 2010 y 2015 e incluye solo los campos _id, title y year en los resultados. Limite el número de documentos devueltos a 5.
1 db.VirtualCollection.find({ "type" : "movie" , "year" : { $gt: 2010 , $lt: 2015 } } , { "title" : 1 , "year" : 1 } ).limit(5 )
1 { 2 "_id" : ObjectId("573a13b8f29313caabd4c8c5" ), 3 "year" : 2011 , 4 "title" : "Thor" 5 } 6 { 7 "_id" : ObjectId("573a13b0f29313caabd34a3e" ), 8 "year" : 2011 , 9 "title" : "Cowboys & Aliens" 10 } 11 { 12 "_id" : ObjectId("573a13b8f29313caabd4ca3f" ), 13 "title" : "Red Dog" , 14 "year" : 2011 15 } 16 { 17 "_id" : ObjectId("573a13b8f29313caabd4d58c" ), 18 "title" : "Jack and Jill" , 19 "year" : 2011 20 } 21 { 22 "_id" : ObjectId("573a13b8f29313caabd4d5b5" ), 23 "year" : 2011 , 24 "title" : "Take Me Home Tonight" 25 }
Busca los detalles de las sesiones del usuario especificados por ID.
1 db.VirtualCollection.find({ "user_id" : "t3qulfeem@kwiv5.6ur" } )
1 { 2 "_id" : ObjectId("5a97f9c91c807bb9c6eb5fb4" ), 3 "user_id" : "t3qulfeem@kwiv5.6ur" , 4 "jwt" : "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NieyJpYXQiOjE1MTk5MDkzMjEsIm5iZiI6MTUxOTk wOTMyMSwianRpIjoiNmJlZDAwMWYtNTFiYi00NzVhLTgAtMDcwNGE5Mjk0MWZlIiwiZXhwIjox NTE5OTEwMjIxLCJpZGVudGl0eSI6eyJlbWFpbCI6InQzcXVsZmVlbd2l2NS42dXIiLCJuYW1lI joiM2lveHJtZnF4IiwicGFzc3dvcmQiOm51bGx9LCJmcmVzaCI6ZmFsc2UsInRUiOiJhY2Nlc3 MiLCJ1c2VyX2NsYWltcyI6eyJ1c2VyIjp7ImVtYWlsIjoidDNxdWxmZWVtQGt3aXY1LjZ1cIm5 hbWUiOiIzaW94cm1mcXgiLCJwYXNzd29yZCI6bnVsbH19ejtr_NyZyBronWMKuE0RFTjWej--T 0zGrdc_iymGtVs" 5 }
Encuentra el teatro especificado por su id y zipcode.
1 db.VirtualCollection.findOne({ $and: [ { "_id" : ObjectId("59a47286cfa9a3a73e51e763" )} , { "location.address.zipcode" : "93933" } ] } )
1 { 2 "_id" : ObjectId("59a47286cfa9a3a73e51e763" ), 3 "theaterId" : 1061 , 4 "location" : { 5 "address" : { 6 "street1" : "101 General Stillwell Dr" , 7 "city" : "Marina" , 8 "state" : "CA" , 9 "zipcode" : "93933" 10 } , 11 "geo" : { 12 "type" : "Point" , 13 "coordinates" : [ 14 -121.81196 , 15 36.66708 16 ] 17 } 18 } 19 }
Encuentra a todos los usuarios cuyo apellido sea Lannister y limita el número de documentos devueltos a 5.
1 db.VirtualCollection.find({ name: /Lannister/ } ).limit(5 )
1 { 2 "_id" : ObjectId("59b99db5cfa9a34dcd7885b8" ), 3 "name" : "Jaime Lannister" , 4 "email" : "nikolaj_coster-waldau@gameofthron.es" , 5 "password" : "$2b$12$6vz7wiwO.EI5Rilvq1zUc./9480gb1uPtXcahDxIadgyC3PS8XCUK" 6 } 7 { 8 "_id" : ObjectId("59b99db6cfa9a34dcd7885ba" ), 9 "name" : "Cersei Lannister" , 10 "email" : "lena_headey@gameofthron.es" , 11 "password" : "$2b$12$FExjgr7CLhNCa.oUsB9seub8mqcHzkJCFZ8heMc8CeIKOZfeTKP8m" 12 } 13 { 14 "_id" : ObjectId("59b99dbdcfa9a34dcd7885c7" ), 15 "name" : "Tyrion Lannister" , 16 "email" : "peter_dinklage@gameofthron.es" , 17 "password" : "$2b$12$xtHwQNXYlQzP2REobUDlzuQimjzBlXrTx1GnwP.xkfULeuuUpRxa2" 18 } 19 { 20 "_id" : ObjectId("59b99dc2cfa9a34dcd7885d2" ), 21 "name" : "Tywin Lannister" , 22 "email" : "charles_dance@gameofthron.es" , 23 "password" : "$2b$12$/i04T5yEJvmsBhF0Jd.kJOk3ZhRzezbTU7ASEM5o43Xxsa4o6IgEy" 24 } 25 { 26 "_id" : ObjectId("59b99dcecfa9a34dcd7885ea" ), 27 "name" : "Lancel Lannister" , 28 "email" : "eugene_simon@gameofthron.es" , 29 "password" : "$2b$12$mNWiHoOqOWQser3s6ezqZeTU5vhskTq.K7xkeTA2P.CIfoWsHvonO" 30 }
Antes de ejecutar las consultas, cambia a la base de datos VirtualDatabase:
Encuentre todos los estados con una población total superior a 10 millones.
1 db.VirtualCollection.aggregate([ { $group: { _id: "$state" , totalPop: { $sum: "$pop" } } } , { $match: { totalPop: { $gte: 10 *1000 *1000 } } } ] )
1 { "_id" : "NY" , "totalPop" : 17990455 } 2 { "_id" : "FL" , "totalPop" : 12937926 } 3 { "_id" : "PA" , "totalPop" : 11881643 } 4 { "_id" : "CA" , "totalPop" : 29760021 } 5 { "_id" : "TX" , "totalPop" : 16986510 } 6 { "_id" : "IL" , "totalPop" : 11430602 } 7 { "_id" : "OH" , "totalPop" : 10847115 }
Encuentra todos los viajes realizados por clientes que duraron menos de 70 minutos.
1 db.VirtualCollection.find({ "tripduration" : { "$lte" : 70 } , "usertype" : { "$eq" : "Customer" } } )
1 { 2 "_id" : ObjectId("572bb8232b288919b68af7cd" ), 3 "tripduration" : 66 , 4 "start station id" : 460 , 5 "start station name" : "S 4 St & Wythe Ave" , 6 "end station id" : 460 , 7 "end station name" : "S 4 St & Wythe Ave" , 8 "bikeid" : 23779 , 9 "usertype" : "Customer" , 10 "birth year" : "" , 11 "start station location" : { 12 "type" : "Point" , 13 "coordinates" : [ 14 -73.96590294 , 15 40.71285887 16 ] 17 } , 18 "end station location" : { 19 "type" : "Point" , 20 "coordinates" : [ 21 -73.96590294 , 22 40.71285887 23 ] 24 } , 25 "start time" : ISODate("2016-01-02T11:49:11Z" ), 26 "stop time" : ISODate("2016-01-02T11:50:18Z" ) 27 }
¡Felicidades! Acabas de configurar una instancia federada de base de datos, creaste una base de datos y colecciones a partir de los datos almacenados en un bucket de S3, y consultaste los datos utilizando comandos MQL.
Para obtener más información sobre las instancias federadas de base de datos, consulta Atlas Data Federation.
Nota Al generar colecciones de manera dinámica a partir de nombres de archivo, el número de colecciones no se reporta con precisión en la vista Data Federation .