Я работаю с базой данных Flight Analyzer (https://neo4j.com/graphgist/flight-analyzer). У нас есть несколько узлов и типов отношений. Узлы: Аэропорт
(SEA:Airport { name:'SEA' })
Рейс
(f0:Flight { date:'11/30/2015 04:24:12', duration:218, distance:1721, airline:'19977' })
Билет
(t1f0:Ticket { class:'economy', price:1344.75 })
Отношения Пункт назначения
(f0)-[:DESTINATION]->(ORD)
Пункт отправления
(f0)-[:ORIGIN]->(SEA)
Назначьте
(t1f0)-[:ASSIGN]->(f0)
Теперь мне нужно найти какой-то путь, и у меня проблема с этим соединением ORIGIN - FLIGHT - DESTINATION. Мне нужно найти все аэропорты, которые связаны с аэропортом LAX с суммой цен на билеты <3000. </p>
Я пробовал
MATCH path = (origin:Airport { name:"LAX" })<-[r:ORIGIN|DESTINATION*..5]->(destination:Airport)
WHERE REDUCE(s = 0, n IN [x IN NODES(path) WHERE 'Flight' IN LABELS(x)] |
s + [(n)<-[:ASSIGN]-(ticket) | ticket.price][0]
) < 3000
RETURN path
, но в этом решении LAX также может быть ORIGIN и DESTINATION. Я хочу выбирать только пути, которые всегда имеют один и тот же порядок aiport1 <- origin - flight1 - destination -> airport2 <- origin - flight2 - destination -> aiport et al c ..
Мне нужно включить вылет и время прибытия, так что дата полета1 + продолжительность <дата полета2, затем дата полета2 + продолжительность <дата полета3 и т.д. c ... </p>