我在数据库arrival_airport
和departure_airport
中有两个节点,两个机场之间有1个关系。
因此,当我要选择2个目的地之间的所有航班时(BOJ-> SFX),请执行以下操作:
MATCH (da:Departure_Airport {airport:'BOJ'})-[f:FlightInfo]->(aa:Arrival_Airport {airport: 'SFX'})
RETURN f, da, aa
问题是,我如何才能多次应用FlightInfo,以便同时获得所有有腿的航班? (例如:BOJ-> FRA-> SFX)
也许查询应该类似于此查询(带有星号):
MATCH (da:Departure_Airport {airport:'BOJ'})-[f:FlightInfo]*->(aa:Arrival_Airport {airport: 'SFX'})
RETURN f, da, aa
更新-解决方案
因此,感谢您的所有回答和评论。我必须正确地建立机场之间的关系。因此,我对机场导入和自动创建关系(航班)的查询如下:
USING PERIODIC COMMIT 1000
LOAD CSV FROM "file:///airports.csv" AS line FIELDTERMINATOR ";"
MERGE (departure_airport: Airport {name:line[0]})
MERGE (arrival_airport: Airport {name: line[1]})
MERGE (departure_airport)-[f:Flight {departure_time:line[2], arrival_time:line[3], carrier_code:line[4], service_class:line[5], overall_conti:line[6]}]-(arrival_airport)
ON CREATE SET departure_airport.name=line[0],arrival_airport.name=line[1], f.departure_time=line[2], f.arrival_time=line[3], f.carrier_code=line[4]
因此,您可以匹配以下提示的航班
答案 0 :(得分:0)
我当然不知道您的所有要求,但是我认为略微适应的图形模型对您更有效。如果机场类型(到达/离开)是通过与另一个机场或航班的进出关系指定的,而不是由节点分别为其自身指定的,则可能会更容易。因此,我建议按照以下方式更改您的图形模型:
CREATE
(boj:Airport {name: 'BOJ'}),
(sfx:Airport {name: 'SFX'}),
(fra:Airport {name: 'FRA'})
CREATE
(boj)-[:FLIGHT_INFO]->(sfx),
(boj)-[:FLIGHT_INFO]->(fra),
(fra)-[:FLIGHT_INFO]->(sfx);
在这种情况下,您所需的查询将是:
MATCH
flightPaths = (departure:Airport {name: 'BOJ'})-[:FLIGHT_INFO*]->(arivial:Airport {name: 'SFX'})
RETURN DISTINCT
flightPaths;