奥地利是Western Europe
的一部分,Europe
属于World
的一部分,是
match (n:Country{iso_alpha_2:'AT'})-[PART_OF*]->(q:Geography)-[PART_OF*]->(w:Geography{name:'World'}) return q.name
的一部分。
q.name
Europe
Western Europe
World
World
Europe
Western Europe
查询返回:
World
为什么会返回重复的行?另外,如何仅从Europe
向下返回一个节点(在这种情况下只是
match (n:Country{iso_alpha_2:'AT'})-[PART_OF*]->(q:Geography)-[PART_OF*1..1]->(w:Geography{name:'World'}) return q.name
)?
q.name
Europe
World
World
此尝试返回:
{{1}}
答案 0 :(得分:1)
丹尼尔,
这可能取决于您使用的Neo4j的版本,或图表的形式。我刚用2.1.3来创建图表
(:Country {iso_alpha_2 : 'AT'})-[:PART_OF]->(:Geography {name : 'Western Europe'})-[:PART_OF]->(:Geography {name : 'Europe'})-[:PART_OF]->(:Geography {name : 'World'})
然后运行您的查询。我的结果是
Europe
Western Europe
这让我想知道你是否有从奥地利到世界的多条路径。
要获取唯一列表,请将DISTINCT关键字添加到return语句中。要从世界中获取一个元素,请执行查询
MATCH (n:Country{iso_alpha_2:'AT'})-[:PART_OF*]->(q:Geography)-[:PART_OF]->(w:Geography{name:'World'})
RETURN DISTINCT q.name
使用和不使用DISTINCT关键字尝试此查询,看看您是否确实拥有从奥地利到世界的多条路径。
恩典与和平,
吉姆