У меня есть коллекция, похожая на эту
[
{
"departure": "NYC",
"arrival": "MIA",
"date": "2018-11-22 12:20:00"
},
{
"departure": "MIA",
"arrival": "LAX",
"date": "2018-11-22 19:20:00"
},
{
"departure": "NYC",
"arrival": "MIA",
"date": "2018-11-22 23:20:00"
}
]
Мне нужно получить все результаты, из-за которых я получаю комбинацию из Нью-Йорка, LAX.
Итак, она должна получить
a.departure = NYC
a.arrival = b.departure
b.departure = LAX
Я смог сделать это с помощью поиска (создание самостоятельного подключения) + 2 совпадения:
{
"$lookup": {
"from": "routes",
"localField": "arrival",
"foreignField": "departure",
"as": "step"
}
},
{
"$match": {
"$and": [
{
"step.destination": "LAX"
}
]
}
},
{
"$match": {
"$and": [
{
"departure": "NYC"
}
]
}
}
Теперь проблема в том, что я хочу добавить правило на основе даты,Дата не должна превышать 3 часа.
Я пробовал с $ match (во многих различных комбинациях) без успеха.
{
"$match": {
"$and": [
{
"step.departure_date": {
"$gte": "$date",
"$lte": new Date($date.getTime() + 3 * 60 * 60 * 1000)
}
}
]
}
}
Есть идеи?Спасибо!