Mongodb: совпадение на основе динамических дат с $ lookup - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть коллекция, похожая на эту

[
  {
    "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)
          }
        }
      ]
    }
  }

Есть идеи?Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...