将多个列表组合成一个列表并为每一行输出

Combine multiple lists into a single list and output it for each row

文档中的这个示例 returns commonMovies 给出了他们都参与其中的演员列表。

https://neo4j.com/developer/kb/performing-match-intersection/#_use_apoc_to_intersect_result_lists

而不是 return 只为普通电影设置 1 行,我如何 return 演员姓名以及例如

Keanu Reeves, [Movie1,Movie2,Movie3]
Hugo Weaving, [Movie1,Movie2,Movie3]
Emil Eifrem, [Movie1,Movie2,Movie3]

普通电影列表每一行都是相同的,在这种情况下没有意义,但我将我的问题抽象为这个

或许,您可以展开末尾的 names 列表,将名称变成单独的行。这样做时,您需要将 names 传递给每个 WITH 子句。

WITH ['Keanu Reeves', 'Hugo Weaving', 'Emil Eifrem'] as names
MATCH (p:Person)-[:ACTED_IN]->(m:Movie)
WHERE p.name in names
WITH names, p, collect(m) as moviesPerActor
WITH names, collect(moviesPerActor) as movies
WITH names, reduce(commonMovies = head(movies), movie in tail(movies) |
 apoc.coll.intersection(commonMovies, movie)) as commonMovies
UNWIND names as name
RETURN name, commonMovies