1.2
This commit is contained in:
parent
b44bba0a50
commit
33b56fb670
115
zapytania.js
Normal file
115
zapytania.js
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
// Zapytanie wyszukujące dostępne pokoje o pojemności większej niż 2 osoby
|
||||||
|
db.rooms.find(
|
||||||
|
{
|
||||||
|
status: "Dostępny",
|
||||||
|
capacity: { $gt: 2 }
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
// Zapytanie wyszukujące rezerwacje z zameldowaniem w czerwcu 2023
|
||||||
|
db.reservations.find(
|
||||||
|
{
|
||||||
|
checkInDate: {
|
||||||
|
$gte: new Date("2023-06-01"),
|
||||||
|
$lt: new Date("2023-07-01")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
// Zapytanie grupujące - statystyki rezerwacji wg typu pokoju
|
||||||
|
db.reservations.aggregate([
|
||||||
|
{
|
||||||
|
$lookup: {
|
||||||
|
from: "rooms",
|
||||||
|
localField: "roomId",
|
||||||
|
foreignField: "_id",
|
||||||
|
as: "room"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$unwind: "$room"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$group: {
|
||||||
|
_id: "$room.type",
|
||||||
|
averagePrice: { $avg: "$totalPrice" },
|
||||||
|
totalReservations: { $sum: 1 },
|
||||||
|
totalRevenue: { $sum: "$totalPrice" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$sort: {
|
||||||
|
totalRevenue: -1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$project: {
|
||||||
|
roomType: "$_id",
|
||||||
|
averagePrice: { $round: ["$averagePrice", 2] },
|
||||||
|
totalReservations: 1,
|
||||||
|
totalRevenue: 1,
|
||||||
|
_id: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
])
|
||||||
|
|
||||||
|
// Zapytanie grupujące - analiza zamówień usług wg kategorii
|
||||||
|
db.serviceOrders.aggregate([
|
||||||
|
{
|
||||||
|
$lookup: {
|
||||||
|
from: "services",
|
||||||
|
localField: "serviceId",
|
||||||
|
foreignField: "_id",
|
||||||
|
as: "serviceDetails"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$unwind: "$serviceDetails"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$match: {
|
||||||
|
status: { $in: ["Potwierdzone", "Zrealizowane"] }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$group: {
|
||||||
|
_id: "$serviceDetails.category",
|
||||||
|
totalOrders: { $sum: 1 },
|
||||||
|
totalRevenue: { $sum: "$totalPrice" },
|
||||||
|
averageQuantity: { $avg: "$quantity" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$sort: {
|
||||||
|
totalOrders: -1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$limit: 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$project: {
|
||||||
|
category: "$_id",
|
||||||
|
totalOrders: 1,
|
||||||
|
totalRevenue: { $round: ["$totalRevenue", 2] },
|
||||||
|
averageQuantity: { $round: ["$averageQuantity", 2] },
|
||||||
|
_id: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
])
|
||||||
|
|
||||||
|
// Zapytanie zliczające pokoje wg statusu dostępności
|
||||||
|
db.rooms.countDocuments(
|
||||||
|
{
|
||||||
|
status: "Dostępny",
|
||||||
|
pricePerNight: { $lt: 500 }
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
// Zapytanie o unikalne kraje pochodzenia gości
|
||||||
|
db.guests.distinct(
|
||||||
|
"address.country",
|
||||||
|
{
|
||||||
|
loyaltyPoints: { $gt: 50 }
|
||||||
|
}
|
||||||
|
)
|
||||||
Loading…
x
Reference in New Issue
Block a user