的我有我的蒙戈数据库以下模式:如何获得嵌套组出聚集
[
{
departureAirport: "JFK",
arrivalAirport: "FRA",
departureDate: "2017-02-22T04:00:00.000Z",
arrivalDate: "2017-02-22T09:45:00.000Z",
flightNumber: "FOOBAR",
availableSeats: 9,
cheapestFare: 65.99
}
]
有几千行的这个DB不同的出发机场,到达机场和日期。
现在我想组的结果获得每人每月抵达机场的最便宜的价格是这样的:
[
{
arrivalAirport: "FRA",
fares: [
{'2017-02': 65.99},
{'2017-03': 65.99}
]
},
{
arrivalAirport: "JFK",
fares: [
{'2017-02': 65.99},
{'2017-03': 65.99}
]
}
]
甚至更好:
[
{
arrivalAirport: "FRA",
fares: {
'2017-02': 65.99,
'2017-03': 65.99
}
},
{
arrivalAirport: "JFK",
fares: {
'2017-02': 65.99,
'2017-03': 65.99
}
}
]
这是我试了一下:
Flight.aggregate([
{
$match: filter
},
{
$group: {
_id: {
arrival: '$arrivalAirport'
}
}
},
{
$group: {
_id: {
year: { $year: '$departureDate' },
month: { $month: '$departureDate' }
},
cheapestFare: { $min: '$cheapestFare' }
}
},
{
$sort: {
departureDate: 1
}
}
]
很明显,这是行不通的,因为我需要所有可用月份的票价为每个arrivalAirport
而不只是每个arrivalAirport
一组。
我在寻找的下一件事:子查询(我来自SQL,所以Mongo对我来说是相当新的)。但似乎MongoDB不支持子查询之类的东西(所以我可以为每个arrivalAirport
创建一个子查询)。是否有任何其他选项可以在不为每个arrivalAirport
创建额外查询的情况下使其工作?
对不起,肯定的!我要更新我的问题 – Slevin