使用N1QL查找中转航班的路线

时间:2018-08-01 07:19:05

标签: couchbase n1ql

我正在尝试扩展Couchbase中可用的示例旅行应用程序,以显示可能的路线从源头到目的地的航班,其中包括类似于搜索Expedia或类似旅行站点时通常看到的航班

例如:来源:奥兰多目的地:代顿。我正在尝试显示以下内容 1.从奥拉兰多到代顿的直航 2.一次连接的航班(奥兰多->纽约,纽约->代顿) 3.具有多个转机航班的其他航班。

有没有一种方法可以使用N1QL实现呢?

注意:使用在沙发床安装中可用的旅行样本数据。

1 个答案:

答案 0 :(得分:0)

无法对任意长度路径进行此类查询。这是N1QL共享的标准SQL中的一个众所周知的问题。有几种类型的SQL允许递归查询,它们可以解决此问题,但N1QL并不是其中一种。

N1QL可以提供的最好的服务是(查询直飞航班UNION ALL,查询长度2的路径UNION ALL,查询长度3的UNION ALL ...),但是您需要知道最大路径您将接受的长度。

对于长度为2或更大的路径的查询将使用JOIN编写。

您还需要避免出现奇怪的事情,例如多余的腿,如下所示: 多伦多->纽约->亚特兰大->纽约->迈阿密

我建议您使用广度优先搜索在应用服务器中实现对这些多步骤航班​​的搜索,并使用N1QL在每个步骤中检索合格的航班。