我想知道如何显示Neo4j Cypher中路径p生成的每个节点和关系的名称 .
我有这个问题:
MATCH (m { name: 'porsche' }),(n { name: 'vehicle' }), p =(m)-[r*]->(n)
return collect(p);
══════════════════════════════╕
│"collect(p)" │
╞══════════════════════════════╡
│[[{"name":"porsche"},{"name":"│
│is a"},{"name":"car","type":"l│
│abel"},{"name":"car","type":"l│
│abel"},{"name":"is a subtype o│
│f"},{"name":"vehicle","type":"│
│label"}],[{"name":"porsche"},{│
│"name":"is a"},{"name":"car","│
│type":"label"},{"name":"car","│
│type":"label"},{},{"name":"veh│
│icle","type":"label"}]] │
└──────────────────────────────┘
但我希望它显示每个节点的名称,然后按顺序显示每个关系的名称,如下所示:
'porsche' 'is a' 'car'
'car' 'is a subtype of' vehicle
1 回答
问题中显示的输出表明您的数据格式不正确 . 例如,并非所有关系实际上都有
name
. 这个答案假定数据格式正确,但如果需要,可以调整以处理缺少的name
属性 .既然你的问题不清楚你想要什么,这里有一些选择 .
选项1
此查询将为每个路径的每个关系返回一个名称三元组(在列表中):
样本输出(针对一条路径):
选项2
如果要将每个路径的结果分开,可以将
UNWIND path_names AS names RETURN names;
替换为RETURN path_names;
. 这会为每条路径产生类似的效果:选项3
如果要从所有路径获取不同的“步骤”,可以执行以下操作:
结果将类似于选项1的结果,除了每个“步骤”将是不同的 .