Я просто не могу обойти это. Я пытаюсь получить результат запроса в мангусте. У меня есть база данных поездок, которые включают в себя маршрут остановок. Я хочу получить все поездки, которые посещают целевую станцию (бонус: и использовать определенную платформу).Nodejs mongoose complex query
Вот что схемы выглядит следующим образом:
var StopSchema = new Schema({
arrival: String,
departure: String,
platform: String,
station: String,
});
var JourneySchema = new Schema({
trainNumber: String,
destination: String,
route: [StopSchema]
});
exampleData:
{
trainNumber: '1',
destination: 'Z',
route: [
{ arrival: "11:23", departure: "11:25", platform: "3", station: "A"},
{ arrival: "11:33", departure: "11:35", platform: "3", station: "B"},
{ arrival: "11:43", departure: "11:45", platform: "3", station: "Z"}
]
},
{
trainNumber: '2',
destination: 'Z',
route: [
{ arrival: "12:23", departure: "12:25", platform: "3", station: "A"},
{ arrival: "12:33", departure: "12:35", platform: "3", station: "B"},
{ arrival: "12:43", departure: "12:45", platform: "3", station: "Z"}
]
},
{
trainNumber: '3',
destination: 'F',
route: [
{ arrival: "12:23", departure: "12:25", platform: "3", station: "D"},
{ arrival: "12:33", departure: "12:35", platform: "3", station: "E"},
{ arrival: "12:43", departure: "12:45", platform: "3", station: "Z"}
]
}
Запрос: получить все поездки посещения "B" (на платформе 3), перечислите маршрут и содействовать цели данные станции
desiredResult:
[
{
trainNumber: '1',
destination: 'Z',
route: [
{ arrival: "11:23", departure: "11:25", platform: "3", station: "A"},
{ arrival: "11:33", departure: "11:35", platform: "3", station: "B"},
{ arrival: "11:43", departure: "11:45", platform: "3", station: "Z"}
],
targetStation: { arrival: "11:33", departure: "11:35", platform: "3", station: "B"}
},
{
trainNumber: '2',
destination: 'Z',
route: [
{ arrival: "12:23", departure: "12:25", platform: "3", station: "A"},
{ arrival: "12:33", departure: "12:35", platform: "3", station: "B"},
{ arrival: "12:43", departure: "12:45", platform: "3", station: "Z"}
],
targetStation: { arrival: "12:33", departure: "12:35", platform: "3", station: "B"}
}
]
Я просто не знаю, какую злую комбинацию elemmatch/aggregate/virtual/query я могу использовать.
Ok, так что мне нужно сделать это в несколько этапов. Но, начиная с одиночной остановки, странно, так как мне нужно все поездки на этой станции. Спасибо, спасибо. – user1736217
Ваш пример показал единственную целевую остановку, поэтому предоставленный образец кода. Второй запрос захватывает все поездки, которые включают эту остановку. Тем не менее, тривиально сделать запрос на несколько остановок, если это то, что вы хотите. –