如何收集可变长度关系的属性
How to collect a variable length relationship's properties
我可以从满足简单模式(长度为 1)的所有关系中获取属性,例如:
MATCH ()-[r:RELATIONSHIP]->() RETURN collect(r.id)
但无法获取变长关系的属性如:
MATCH ()-[r:RELATIONSHIP*]->() RETURN collect(r.id)
如有任何帮助,我们将不胜感激。
Error message is: Neo.ClientError.Statement.SyntaxError: Type
mismatch: expected Any, Map, Node, Relationship, Point, Duration,
Date, Time, LocalTime, LocalDateTime or DateTime but was
List
在简单模式(固定长度1)中变量r
只有一个关系,但在可变长度模式的情况下,变量r
是 关系列表。
您的第一个查询是正确的,但在第二个查询中,您试图从 List
获取 ID 属性 而不是从特定的 relationship
.[=16= 获取它]
您可以修改查询以从列表中获取属性,如下所示:
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)的所有关系中获取属性,例如:
MATCH ()-[r:RELATIONSHIP]->() RETURN collect(r.id)
但无法获取变长关系的属性如:
MATCH ()-[r:RELATIONSHIP*]->() RETURN collect(r.id)
如有任何帮助,我们将不胜感激。
Error message is: Neo.ClientError.Statement.SyntaxError: Type mismatch: expected Any, Map, Node, Relationship, Point, Duration, Date, Time, LocalTime, LocalDateTime or DateTime but was List
在简单模式(固定长度1)中变量r
只有一个关系,但在可变长度模式的情况下,变量r
是 关系列表。
您的第一个查询是正确的,但在第二个查询中,您试图从 List
获取 ID 属性 而不是从特定的 relationship
.[=16= 获取它]
您可以修改查询以从列表中获取属性,如下所示:
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))