Mongodb:使用$ lookup根据动态日期进行匹配

时间:2018-11-21 22:59:40

标签: mongodb mongodb-query

我有一个与此类似的收藏

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

我需要获得所有结果,使我可以从纽约市,洛杉矶国际机场获得合并。

所以,它应该得到

a。启程=纽约市

a.arrival = b。出发

b。启程= 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)
          }
        }
      ]
    }
  }

有什么主意吗?谢谢!

0 个答案:

没有答案