Я новичок в Neo4j, и у меня есть относительно сложная (но небольшая) база данных, которую я упростил до следующего:
У первой двери нет ключа, у всех других дверей есть ключи,окно не требует ключа.Идея состоит в том, что если у человека есть key:'A'
, я хочу увидеть все возможные пути, по которым он может пойти.
Вот код для генерации db
CREATE (r1:room {name:'room1'})-[:DOOR]->(r2:room {name:'room2'})-[:DOOR {key:'A'}]->(r3:room {name:'room3'})
CREATE (r2)-[:DOOR {key:'B'}]->(r4:room {name:'room4'})-[:DOOR {key:'A'}]->(r5:room {name:'room5'})
CREATE (r4)-[:DOOR {key:'C'}]->(r6:room {name:'room6'})
CREATE (r2)-[:WINDOW]->(r4)
Вот запросЯ пытался, ожидая, что он вернет все, кроме room6
, вместо этого у меня есть ошибка, которая означает, что я действительно не знаю, как построить запрос.
with {key:'A'} as params
match (n:room {name:'room1'})-[r:DOOR*:WINDOW*]->(m)
where r.key=params.key or not exists(r.key)
return n,m
Чтобы было ясно, я немне не нужно отлаживать мой запрос, а помочь понять, как правильно его написать.
Спасибо!