如何收集可变长度关系的属性

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))