我构建了一个节点类型和两种关系类型的简单图:IS和ISNOT。 IS关系意味着节点对属于同一个组,显然ISNOT代表不属于rel。
当我必须获取相关节点组时,我运行以下查询:
"MATCH (a:Item)-[r1:IS*1..20]-(b:Item) RETURN a,b"
所以这会返回很多a是b的结果,我添加了一些代码来将它们分组。
我想要的是将他们分组修改上面的查询,但鉴于我的菜鸟级别,我还没有想出来。我想要的是每组获得一行,如:
(node1, node3, node5)
(node2,node4,node6)
(node7,node8)
答案 0 :(得分:2)
我假设你所谓的群组是nodes present in a path where all these nodes are connected with a :IS relationship
。
我认为这个查询就是你想要的:
MATCH p=(a:Item)-[r1:IS*1..20]-(b:Item)
RETURN nodes(p) as nodes
其中p
是描述模式的路径,然后返回集合中路径中存在的所有节点。
请注意,一个简单的图表(http://console.neo4j.org/r/ukblc0):
(item1)-[:IS]-(item2)-[:IS]-(item3)
将返回6个路径,因为您在模式中使用undericted relationships
,因此item1和item2之间有两条可能的路径,例如。