Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Y NEGOCIOS
Evaluación 2
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:
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({
},
{
_id: "002",
date: new Date("2022-7-5"),
listing_id: "0003",
reviewer_id: "0004",
reviewer_name: "Miguel",
comments: "Muy recomendable el lugar"
}
]
})
Consulta: