Está en la página 1de 12

ADMINISTRACIÓN

Y NEGOCIOS

Bases de datos no estructuradas

Evaluación 2

NOMBRE: Ana Patricia Serrano Vilches


CARRERA: Ingeniera informática
ASIGNATURA: bases de datos no estructuradas
PROFESOR: Alberto Gabriel Marambio Riveros
FECHA: 01-06-2022
PARTE 1 – CONSULTAS

1. Mostrar el nombre de los hospedajes en casas (property_type=”House”), con capacidad


(accommodates) para más de 15 personas, incluir el sitio web respectivo.

db.airbnb.find({
property_type: "House",
accommodates: {$gt: 15}
}, {
_id: 0,
property_type: 1,
name: 1,
accommodates: 1,
listing_url: 1
}
)

2. Contabilizar los hoteles (property_type=”Hotel”) que tengan tipos de camas “Real Bed”.

db.airbnb.find({
property_type: "Hotel",
bed_type: "Real Bed"
}, {
_id: 0,
property_type: 1,
bed_type: 1
}).count()
3. Mostrar los nombres de hospedajes con tipos de habitación “Shared room”, que tengan 20 o más
comentarios/revisiones y cuyo último reclamo sea posterior o igual al 8 de marzo de 2019.

db.airbnb.find({
$and: [{
room_type: "Shared room"
},
{
number_of_reviews: {
$gte: 20
}
},
{
last_scraped: {
$gte: new Date("2019-3-8")
}
}]
},
{
_id: 0,
name: 1
})
4. Mostrar los nombres de hospedajes que no estén ubicados en el país “United States” y que en su
descripción resumida contengan las palabras “historic area” o “botanical garden”.

db.airbnb.find({
$and: [{
"address.country": {
$ne: "United States"
}
},
{
$or: [{
summary: {
$regex: /historic area/i
}
}, {
summary: {
$regex: /botanical garden/i
}
}]
}]
}, {
_id: 0,
"address.country": 1,
summary: 1,
name:1
})

5. Mostrar los nombres de hospedajes ubicados en Portugal, cuya cantidad mínima de noches a reservar sea
mayor que 0.

db.airbnb.find({
"address.country": "Portugal",
minimum_nights: {
$ne: "0"
}
}, {
_id: 0,
name: 1,
minimum_nights: 1,
"address.country": 1
})
6. Mostrar los hospedajes que sean de tipo “Bungalow”, “Villa”, o “Chalet” y que tengan capacidad para 10 o
más personas.

db.airbnb.find({
$and: [{
property_type: {
$in: ["Bungalow", "Villa", "Chalet"]
}
}, {
accommodates: {
$gte: 10
}
}]
}, {
_id: 0,
name: 1,
property_type: 1,
accommodates: 1
})

7. Contabilizar los hospedajes de “Brazil” que no tienen comentarios ingresados (frst_review) y que no tienen
defnidos precios semanales ni mensuales (weekly_price, monthly_price).

db.airbnb.find({
$and: [{
"address.country": "Brazil"
}, {
first_review: {
$exists: false
}
}, {
weekly_price: {
$exists: false
}
}, {
monthly_price: {
$exists: false
}
}]
}).count()
8. Mostrar los hospedajes y su ubicación (país), que no tengan “Wifi”, “TV” ni “Cable TV” y con tipo de cama
distinto de “Real Bed”.

db.airbnb.find({
$and: [{
amenities: {
$nin: ["Wifi", "TV", "Cable TV"]
}
}, {
bed_type: {
$ne: "Real Bed"
}
}]
}, {
name: 1,
_id:0,
"address.country": 1,
amenities: 1,
bed_type: 1
})
9. Mostrar los nombres de los hospedajes que no tengan tarifas de limpieza, con precios dentro del rango 100
– 200, con capacidad para 0 o más personas y con 3 o más dormitorios. Mostrar los datos ordenados por precio
en forma ascendente.

db.airbnb.find({
$and: [{
cleaning_fee: {
$exists: false
}
}, {
price: {
$gte: 100,
$lte: 200
}
}, {
accommodates: {
$gte: 0
}
}, {
bedrooms: {
$gte: 3
}
}]
}, {
_id: 0,
name: 1,
price: 1,
accommodates: 1,
bedrooms: 1
}).sort({price: 1})
10. Mostrar los nombres de los hospedajes en España (Spain) o Portugal, que no tengan la prohibición de no
fumar (o no smoking) en sus reglas de hospedaje y que tengan como mínimo 7 dormitorios. Listar ordenados
por cantidad de dormitorios en forma descendente. Asegurarse que los hospedajes filtrados contengan el
campo “house_rules”.

db.airbnb.find({
"address.country": {
$in: ["Spain", "Portugal"]
},
house_rules: {
$exists: true,
$not: {
$regex: /no smoking/i
}
},
bedrooms: {
$gte: 7
}
}, {
_id: 0,
"address.country": 1,
house_rules: 1,
bedrooms: 1
}).sort({bedrooms: -1})
PARTE 2 – CRUD
11. Para los hospedajes de Australia que tengan 4 dormitorios y 3 o más baños, fjar el precio máximo a 900.

Consulta:

db.airbnb.find({"address.country":"Australia",bedrooms:4,bathrooms:{$gte:3}},{price:1,bedrooms:1,"address.co
untry":1,bathrooms:1})

Actualización:

db.airbnb.updateMany({
"address.country": "Australia",
bedrooms: 4,
bathrooms: {
$gte: 3
}
}, {
$min: {
price: 900
}
})

12. Para el hospedaje de nombre “Ribeira Charming Duplex”, agregar el campo “comentario”, con los siguientes
datos: nombre=”Margaret Hamilton”, fecha: 12-05-2022, texto = “Mucho calor y demasiado húmedo”.

Consulta:

db.airbnb.find({name:"Ribeira Charming Duplex"},{name:1,comentario:1})

Actualización:

db.airbnb.updateOne({
name: "Ribeira Charming Duplex"
}, {
$set: {
comentario: {
nombre: "Margaret Hamilton",
fecha: new Date('2022-05-12'),
texto: "Mucho calor y demasiado húmedo"
}
}
})
13. Para los hospedajes de China que cuenten con detectores de humo (Smoke detector), y que contengan el
campo “security_deposit”, eliminar los campos “cleaning_fee” y “extra_people”.

db.airbnb.updateMany({
"address.country": "China",
amenities: "Smoke detector",
security_deposit: {
$exists: true
}
}, {
$unset: {
cleaning_fee: "",
extra_people: ""
}
})

14. Actualizar el hospedaje de nombre “Cerros de Valpo”, con la siguiente información (respetar nombres de
los campos originales de la colección). Si el registro no existe, se debe insertar:
• sitio web = “http://cerrosvalpo.cl”,
• descripción resumida = “Vista a la bahía para celebración del año nuevo”,
• reglas de hospedaje = “No se permite fumar dentro de las habitaciones”,
• tipo de habitación “Shared”,
• tipo de camas = “air_bed”,
• capacidad (personas) = 10, dormitorios = 8, baños = 4,
• dirección = calle = “Av. 14 asientos, 80”, país = “Chile”, código de país = “CL”,
• precio = 400

Inserción:

db.airbnb.insertOne({

name:"Cerros de Valpo",
listing_url:"http://cerrosvalpo.cl",
summary:"Vista a la bahía para celebración del año nuevo",
house_rules:"No se permite fumar dentro de las habitaciones",
room_type:"Shred",
bed_type:"air_bed",
accommodates:10,
bedrooms:8,
bathrooms:4,
address:{street:"Av. 14 asientos, 80",
country:"Chile",
country_code:"CL"},
price:400

})
Consulta:

db.airbnb.find({name:"Cerros de Valpo"})

15. Ingresar un nuevo hospedaje de su elección, respetando los campos originales de la colección.

Inserción:

db.airbnb.insertOne({

name: "Cerro reloj de flores",


listing_url: "http://cerroRelojDeFlores.cl",
summary: "Vista a la playa ",
house_rules: "1) No se permite fumar dentro de las habitaciones, 2) No se permite llegar alcoholizado",
room_type: "Shred",
bed_type: "air_bed",
accommodates: 5,
bedrooms: 5,
bathrooms: 3,
address: {
street: "Av. 34 Palmeras, 90",
country: "Chile",
country_code: "CL"
},
price: 100,
reviews: [{
_id: "001",
date: new Date("2022-6-1"),
listing_id: "0001",
reviewer_id: "0002",
reviewer_name: "Susan",
comments: "Esto es todo lo que esperábamos para descansar..muy buen lugar"

},

{
_id: "002",
date: new Date("2022-7-5"),
listing_id: "0003",
reviewer_id: "0004",
reviewer_name: "Miguel",
comments: "Muy recomendable el lugar"
}
]

})
Consulta:

db.airbnb.find({name:"Cerro reloj de flores"})

También podría gustarte