Neo4j 如何收集可变长度关系';s属性
我可以从满足简单模式(长度为1)的所有关系中获得属性,例如: 但无法获得可变长度关系的属性,例如:Neo4j 如何收集可变长度关系';s属性,neo4j,properties,cypher,graph-traversal,Neo4j,Properties,Cypher,Graph Traversal,我可以从满足简单模式(长度为1)的所有关系中获得属性,例如: 但无法获得可变长度关系的属性,例如: MATCH ()-[r:RELATIONSHIP*]->() RETURN collect(r.id) 任何帮助都将不胜感激 错误消息为:Neo.ClientError.Statement.SyntaxError:Type 不匹配:应为任意、映射、节点、关系、点、持续时间、, 日期、时间、LocalTime、LocalDateTime或DateTime,但为 名单 在简单模式(固定长度1)
MATCH ()-[r:RELATIONSHIP*]->() RETURN collect(r.id)
任何帮助都将不胜感激
错误消息为:Neo.ClientError.Statement.SyntaxError:Type
不匹配:应为任意、映射、节点、关系、点、持续时间、,
日期、时间、LocalTime、LocalDateTime或DateTime,但为
名单
在简单模式(固定长度1)中,变量r
仅为一个关系,但在可变长度模式中,变量r
为关系列表
第一个查询是正确的,但在第二个查询中,您尝试从列表
获取id属性,而不是从特定的关系
获取id属性
您可以修改查询以从列表中获取属性,如下所示:
MATCH ()-[r:RELATED_TO*2]->()
UNWIND r as rel
RETURN COLLECT(DISTINCT id(rel))
上述模式(不推荐使用与可变长度模式中的列表的绑定关系)已不推荐使用,并将在将来的版本中删除
推荐的方法是将整个路径绑定到一个变量,然后提取关系:
MATCH path=()-[:RELATED_TO*2]->()
UNWIND relationships(path) AS rel
RETURN COLLECT(DISTINCT id(rel))
在简单模式(固定长度1)中,变量r
仅为一个关系,但在可变长度模式中,变量r
为关系列表
第一个查询是正确的,但在第二个查询中,您尝试从列表
获取id属性,而不是从特定的关系
获取id属性
您可以修改查询以从列表中获取属性,如下所示:
MATCH ()-[r:RELATED_TO*2]->()
UNWIND r as rel
RETURN COLLECT(DISTINCT id(rel))
上述模式(不推荐使用与可变长度模式中的列表的绑定关系)已不推荐使用,并将在将来的版本中删除
推荐的方法是将整个路径绑定到一个变量,然后提取关系:
MATCH path=()-[:RELATED_TO*2]->()
UNWIND relationships(path) AS rel
RETURN COLLECT(DISTINCT id(rel))
请注意,如果希望每个路径的关系id而不是所有匹配路径的关系id,可以使用列表理解从该特定路径的可变长度路径中的所有关系中提取id:
匹配路径=()-[:RELATED_to*2]->()返回[rel in relationships(path)| id(rel)]作为relid
谢谢,@InverseFalcon以获取建议。请注意,如果您希望每个路径的关系id而不是所有匹配路径的关系id,则可以使用列表理解从该特定路径的可变长度路径中的所有关系中提取id:MATCH path=()-[:RELATED_to*2]->()返回[rel in relationships(path)| id(rel)]作为relIds
谢谢@InverseFalcon的建议。