我具有以下理论图结构:
(:Car)<-[:LIKES_C]-(:Person)-[:LIKES_B]->(:Bike)
Person
还具有其他不包含单词 Likes 的关系,例如(:Person)-[:LOVES]-(:Person)
我想编写一个密码查询,该查询将产生具有关联关系的所有连接到Person
的节点,其名称以 LIKES 开头。
我也无法将关系名称更改为LIKES
,因为有很多带有标签Bike
和Car
的节点,根据this post,Neo4j在诸如以下的查询中效率低下:
MATCH (p:Person)-[:LIKES]->(:Car)
它将同时搜索Cars
和Bikes
,然后搜索然后过滤器来搜索Cars
,从而有效地增加了执行时间。
是否有一种有效的方法来查询LIKES*
关系?
答案 0 :(得分:4)
雅各布! 有一种方法可以匹配一组关系类型:
# A tibble: 10 x 6
# Groups: XCODE [5]
XCODE Age Sex ResultA ResultB ResultC
<fct> <int> <int> <int> <int> <int>
1 X001 12 2 2 3 4
2 X001 12 2 2 3 4
3 X002 23 2 4 6 66
4 X002 23 2 4 6 66
5 X003 33 1 8 7 6
6 X003 33 1 8 7 6
7 X004 32 1 1 7 3
8 X004 32 1 1 7 3
9 X005 55 2 8 8 8
10 X005 55 2 8 8 8
在这种情况下,您将能够遍历match (p:Person)-[:LIKES_C|LIKES_B]->(carOrBike)
节点的:LIKES_C
和:LIKES_B
关系。
还可以将:Person
与关系名称列表结合使用,并与UNWIND
(描述为here)结合使用,一次查询多个关系。