当返回的边是列表时,如何只返回边的属性

在类似 MATCH (v:player{name:“Tim Duncan”})-[e]->(v2)
RETURN v2.player.name, type(e), v2.player.age;
这样的语句中 如何只返回e的属性呢, 直接properties(e) 会返回badtype 因为e是一个list

THX

我这里properties(e) , properties(e).degree 都可以正常返回结果的, 类似这样, 你的数据集是什么?

(root@nebula) [basketballplayer]> MATCH (v:player{name:"Tim Duncan"})-[e]->(v2) RETURN v2.player.name, properties(e), v2.player.age;
+-----------------+------------------------------------+---------------+
| v2.player.name  | properties(e)                      | v2.player.age |
+-----------------+------------------------------------+---------------+
| __NULL__        | {end_year: 2016, start_year: 1997} | __NULL__      |
| "Manu Ginobili" | {degree: 95}                       | 41            |
| "Tony Parker"   | {degree: 95}                       | 36            |
+-----------------+------------------------------------+---------------+

感谢回复,
MATCH (v:player{name:“Tim Duncan”})-[e*1..9]->(v2) RETURN properties(e);
试下这种呢,e要是一个列表

是一个list吗, 可以试试下标语法: properties(e[0])

是的,这样是可以的,但是只返回了第一个边的属性,想要返回所有边的属性。

return properties(e[0]),properties(e[1]),properties(e[2]) …
这样太长了吧? 有没有更好的方式呢?

return e 全部返回呢, 这样满足需求吗

或者unwind一下也可以
MATCH (v:player{name:“Tim Duncan”})-[e*1…2]->(v2) unwind e as edgelist return edgelist

1 个赞

试了一下 返回的结果里的edges_parsed_list里能直接读取到边的属性了,可以满足需求

1 个赞