我有一个与此类似的收藏
[
{
"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)
}
}
]
}
}
有什么主意吗?谢谢!