我有这个理论图结构:
(: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(此处所述)结合使用,以一次查询多个关系。