Neo4j - 使用Cypher从节点开始并将Traverse图表移动到指定的深度并查找节点和关系

时间:2014-08-06 17:30:25

标签: rest graph neo4j cypher

我有一个简单的图表,其中我试图从特定节点开始并遍历2的深度。从这次遍历我试图提取节点和关系的名称。

这是我的查询,

    START n=node(5)
    MATCH p=(n)-[r:Relation*0..2]-(m)
    RETURN n.name,r.name,m.name;

我收到此错误:

    Type mismatch: expected Map, Node or Relationship but was Collection<Relationship> (line 3, column 15)

在错误描述中,它将^符号指向r.name

有人可以帮助我理解这个问题。我的目标是获得关系的名称..

根据我的理解,r将作为集合返回。有没有办法在集合中显示个别名称?

1 个答案:

答案 0 :(得分:8)

深水,

正如您所指出的,问题是“r”是可能包含0,1或2个元素的关系集合。您可以使用reduce函数创建关系名称的字符串并返回该字符串。

START n=node(5)
MATCH (n)-[r:Relation*0..2]-(m)
WITH n, m, reduce(s = '', rel IN r | s + rel.name + ',') as rels
RETURN n.name, m.name, rels;

恩典与和平,

吉姆