如何在密码的关系名称中使用通配符

Jak*_*ski 1 neo4j cypher

我有这个理论图结构:

(:Car)<-[:LIKES_C]-(:Person)-[:LIKES_B]->(:Bike)
Run Code Online (Sandbox Code Playgroud)

Person也有其他不包含单词LIKES的关系,例如(:Person)-[:LOVES]-(:Person)

我想编写一个密码查询,该查询将产生连接到Person具有关系的所有节点,其名称以LIKES开头。

此外,我不能关系的名字更改为LIKES因为有很多节点与标签Bike,并Car根据这个帖子的Neo4j会像查询效率低下:

MATCH (p:Person)-[:LIKES]->(:Car)
Run Code Online (Sandbox Code Playgroud)

它将通过同时进行搜索Cars,并Bikes随后过滤器Cars有效地提高执行时间。

有没有一种有效的方式来查询LIKES*关系?

小智 5

雅各布!有一种方法可以匹配一组关系类型:

match (p:Person)-[:LIKES_C|LIKES_B]->(carOrBike)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,你将能够穿越两:LIKES_C:LIKES_B从关系的:Person节点。

也可以将UNWIND一系列的关系名称与apoc.cypher.run此处所述)结合使用,以一次查询多个关系。