我们有一个地理区域和国家/地区的图表,与定向[:PART_OF]
关系相关联:
http://console.neo4j.org/?id=ats4i9
让图中有节点的随机子集,特殊情况是所有终端节点的集合(没有后代):
MATCH (endnode:Geography)-[:PART_OF*]->(parent:Geography)
WHERE NOT (:Geography)-[:PART_OF]->(endnode:Geography)
RETURN endnode.name
// ['Ghana','Nigeria','Iran','Russia','Germany','United States', 'Mexico', 'Brazil']
对于n = 1,2,3,..
,如何编写将上述集合折叠为精确n
个节点的集合的Cypher,其中每个节点是祖先或与初始中的一个或多个节点相同采集。此外,初始集合中的任何节点都不能从折叠集合中的多个节点下降(没有重叠条件)。
例如,如果n=1
,则上述初始集合的结果应为World
节点。
如果n=2
,结果应为['Americas','EMEA']
集合。
如果n=4
,则结果应为['North America', 'South America & Africa', 'Europe', 'Asia']
或['Americas', 'Africa', 'Europe', 'Asia']
集合。