Как использовать подстановочный знак в имени отношения в шифре - PullRequest
1 голос
/ 02 апреля 2019

У меня есть такая теоретическая структура графика:

(:Car)<-[:LIKES_C]-(:Person)-[:LIKES_B]->(:Bike)

Person также имеет другие отношения, не содержащие слова LIKES , скажем (:Person)-[:LOVES]-(:Person)

Я хотел бы написать запрос на шифрование, который выдаст все узлы, связанные с Person отношением, имя которого начинается с LIKES .

Также я не могу изменить имена отношений на LIKES, потому что есть много узлов с метками Bike и Car, и согласно этот пост Neo4j будет неэффективным в запросе, подобном:

MATCH (p:Person)-[:LIKES]->(:Car)

Он будет искать через Cars и Bikes и , а затем фильтр для Cars, эффективно увеличивая время выполнения.

Есть ли эффективный способ запроса отношения LIKES*?

1 Ответ

4 голосов
/ 02 апреля 2019

Якуб!Существует способ сопоставления набора типов отношений:

match (p:Person)-[:LIKES_C|LIKES_B]->(carOrBike)

В этом случае вы сможете проходить как :LIKES_C, так и :LIKES_B отношения с узла :Person.

Oneможет также использовать UNWIND со списком имен отношений в сочетании с apoc.cypher.run (здесь описано ) для запроса нескольких связей одновременно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...