Práctica 5

De FdIwiki ABD
Saltar a: navegación, buscar

Práctica 5 (Jefferson Almache y Juan Luis Armas)

APARTADO 2.- Crear y utilizar tu propia BD

Entrega un fichero con las instrucciones necesarias y el resultado de ejecutarlas

Realiza los siguientes pasos, consultando los operadores descritos en la teoría: 1.- Crea una BD con tu nombre de pila

       nuevaDB=miconn.getDB("juanlujeff");

2.- Crea una colección llamada misAficiones.

       coll = db.getCollection("misAficiones");

3.- Crea un documento en esa colección que tenga los campos: - Nombre: string - Lugares: array con el nombre de tres lugares donde puedes realizar tu afición cada lugar tiene estos campos: - NombreLugar - Distancia desde casa - Precio: valor numérico - Nivel de importancia: entre 1 y 10

      db.misAficiones.insert(
      { "nombre": "BeberCerveza",
      "lugares": [
      { "nombreLugar": "Diego de Leon", "distanciaCasa": 400},
      { "nombreLugar": "Puerta del angel", "distanciaCasa": 200},
      { "nombreLugar": "Aluche", "distanciaCasa": 100} ],
      "precio": 13,
      "nivelImportancia": 2
      } )

4.- Crea otro documento. Esta vez tiene, además de los campos del anterior, los siguientes campos: Instrumento necesario para hacer esa afición. Ropa necesaria: es una array de al menos tres elementos de tipo string.

      db.misAficiones.insert( { "nombre": "BeberCerveza",
      "lugares": [ { "nombreLugar": "Diego de Leon", "distanciaCasa": 400},
      { "nombreLugar": "Puerta del angel", "distanciaCasa": 200},
      { "nombreLugar": "Aluche", "distanciaCasa": 100} ],
      "precio": 13, "nivelImportancia": 2, "instrumentoNecesario": "cerveza", 
      "ropaNecesaria": ["Camisa","PantalonCorto","Gorra"]} )


5.- Repite los puntos 3. y 4. hasta tener ocho aficiones

      db.misAficiones.insert(
      { "nombre": "Bailar",
      "lugares": [
      { "nombreLugar": "Moncloa", "distanciaCasa": 410},
      { "nombreLugar": "Gran via", "distanciaCasa": 220},
      { "nombreLugar": "Arguelles", "distanciaCasa": 130} ],
      "precio": 20,
      "nivelImportancia": 9
      } )
      db.misAficiones.insert(
      { "nombre": "Gritar",
      "lugares": [
      { "nombreLugar": "En la uni", "distanciaCasa": 410},
      { "nombreLugar": "En el autobus", "distanciaCasa": 222},
      { "nombreLugar": "En el metro", "distanciaCasa": 133} ],
      "precio": 0,
      "nivelImportancia": 2
      } )
      db.misAficiones.insert(
      { "nombre": "Estudiar",
      "lugares": [
      { "nombreLugar": "En la uni", "distanciaCasa": 20},
      { "nombreLugar": "En la biblio", "distanciaCasa": 120},
      { "nombreLugar": "En el parque", "distanciaCasa": 1123} ],
      "precio": 78,
      "nivelImportancia": 4
      } )
      db.misAficiones.insert(
      { "nombre": "Jugar",
      "lugares": [
      { "nombreLugar": "Casa", "distanciaCasa": 4130},
      { "nombreLugar": "Parque", "distanciaCasa": 2220},
      { "nombreLugar": "CasaAbuelos", "distanciaCasa": 1310} ],
      "precio": 22,
      "nivelImportancia": 6
      } )
      db.misAficiones.insert(
      { "nombre": "tocarGuitarra",
      "lugares": [
      { "nombreLugar": "casa", "distanciaCasa": 400},
      { "nombreLugar": "campo", "distanciaCasa": 200},
      { "nombreLugar": "jaca", "distanciaCasa": 100} ],
      "precio": 33,
      "nivelImportancia": 7,
      "instrumentoNecesario": "guitarra",
      "ropaNecesaria": [
      "Camisa",
      "cejilla",
      "mastil"]
      } )
      db.misAficiones.insert(
      { "nombre": "Fumar",
      "lugares": [
      { "nombreLugar": "airePuro", "distanciaCasa": 4020},
      { "nombreLugar": "campo", "distanciaCasa": 202},
      { "nombreLugar": "huesca", "distanciaCasa": 1010} ],
      "precio": 5,
      "nivelImportancia": 5,
      "instrumentoNecesario": "cigarro",
      "ropaNecesaria": [
      "camisa",
      "guantes",
      "pantalon"]
      } )

6.- Búsquedas de documentos

6.a.- La aficiones que tienes con nivel de importancia entre 3 y 8 . Escoge los valores para obtener al menos cuatro, dos de cada uno de los tipos con campos diferentes.

      db.misAficiones.find ( { "nivelImportancia" : { $gt: 3, $lt: 8} },{});

Resultado

      db.misAficiones.insert(
      { "nombre": "Estudiar",
      "lugares": [
      { "nombreLugar": "En la uni", "distanciaCasa": 20},
      { "nombreLugar": "En la biblio", "distanciaCasa": 120},
      { "nombreLugar": "En el parque", "distanciaCasa": 1123} ],
      "precio": 78,
      "nivelImportancia": 4
      } )
      db.misAficiones.insert(
      { "nombre": "Jugar",
      "lugares": [
      { "nombreLugar": "Casa", "distanciaCasa": 4130},
      { "nombreLugar": "Parque", "distanciaCasa": 2220},
      { "nombreLugar": "CasaAbuelos", "distanciaCasa": 1310} ],
      "precio": 22,
      "nivelImportancia": 6
      } )
      db.misAficiones.insert(
      { "nombre": "tocarGuitarra",
      "lugares": [
      { "nombreLugar": "casa", "distanciaCasa": 400},
      { "nombreLugar": "campo", "distanciaCasa": 200},
      { "nombreLugar": "jaca", "distanciaCasa": 100} ],
      "precio": 33,
      "nivelImportancia": 7,
      "instrumentoNecesario": "guitarra",
      "ropaNecesaria": [
      "Camisa",
      "cejilla",
      "mastil"]
      } )
      db.misAficiones.insert(
      { "nombre": "Fumar",
      "lugares": [
      { "nombreLugar": "airePuro", "distanciaCasa": 4020},
      { "nombreLugar": "campo", "distanciaCasa": 202},
      { "nombreLugar": "huesca", "distanciaCasa": 1010} ],
      "precio": 5, "nivelImportancia": 5, "instrumentoNecesario": "cigarro", 
      "ropaNecesaria": ["camisa", "guantes","pantalon"]} )

6.b.- Aficiones cuya ropa sea uno de los elementos posibles

      db.misAficiones.find({“ropaNecesaria”:{$exists:true}},{ });

Resultado

      { "nombre": "BeberCerveza",
      "lugares": [
      { "nombreLugar": "Diego de Leon", "distanciaCasa": 400},
      { "nombreLugar": "Puerta del angel", "distanciaCasa": 200},
      { "nombreLugar": "Aluche", "distanciaCasa": 100} ],
      "precio": 13,
      "nivelImportancia": 2,
      "instrumentoNecesario": "cerveza",
      "ropaNecesaria": [
      "Camisa",
      "PantalonCorto",
      "Gorra"]
      } )
      db.misAficiones.insert(
      { "nombre": "tocarGuitarra",
      "lugares": [
      { "nombreLugar": "casa", "distanciaCasa": 400},
      { "nombreLugar": "campo", "distanciaCasa": 200},
      { "nombreLugar": "jaca", "distanciaCasa": 100} ],
      "precio": 33,
      "nivelImportancia": 7,
      "instrumentoNecesario": "guitarra",
      "ropaNecesaria": [
      "Camisa",
      "cejilla",
      "mastil"]
      } )
      db.misAficiones.insert(
      { "nombre": "Fumar",
      "lugares": [
      { "nombreLugar": "airePuro", "distanciaCasa": 4020},
      { "nombreLugar": "campo", "distanciaCasa": 202},
      { "nombreLugar": "huesca", "distanciaCasa": 1010} ],
      "precio": 5,
      "nivelImportancia": 5,
      "instrumentoNecesario": "cigarro",
      "ropaNecesaria": ["camisa","guantes","pantalon"]} )


6.c.- Como las consultas que devuelven varios documentos salen sin formatear, queremos usar un cursor para visualizarlas. Usando como referencia el descrito a continuación, crea y ejecuta uno para que la consulta de todos los elementos, los muestre adecuadamente.

      var cursor = db.ultimasAventuras.find({ },{})
      cursor.forEach( function(item) { print(tojson(item)) } );
      cursor.hasNext() // "false" si ya no hay más elementos
      cursor.hasNext() // "true" s todavía quedan elementos por recorrer
      var cursor = db.misAficiones.find({ }, { })
      cursor.forEach(
      function(item)
      {print(tojson(item))}
      );
      cursor.hasNext()

7.- Vamos a probar las Colecciones limitadas con un máximo de elementos:

7.1 Crear otra colección llamada ultimasAventuras, donde solo vas a conservar las últimas tres. Para ello usan los parámetros capped: true y max:3 . Revisa la teoría si lo necesitas.

      db.createCollection("ultimasAventuras", {capped:true, size:8, max:3});

7.2 Crea cinco documentos

      db.ultimasAventuras.insert({"_id":{"str":"1"},"Nombre":"Kapital"})
      db.ultimasAventuras.insert({"_id":{"str":"2"},"Nombre":"verano en gandía"})
      db.ultimasAventuras.insert({"_id":{"str":"3"},"Nombre":"casa de jeff"})
      db.ultimasAventuras.insert({"_id":{"str":"4"},"Nombre":"fallas"})
      db.ultimasAventuras.insert({"_id":{"str":"5"},"Nombre":"casa de juan lu"})

7.3 Crea una consulta para comprobar el contenido: tiene solo las últimas tres aventuras ?

      coll = db.getCollection("ultimasAventuras")
      coll.find({“Nombre”:{$exists:true}},{ })