如何在neo4j中连接多个列表

Foh*_*len 0 neo4j cypher

我想知道 Neo4j 是否可以实现以下功能。

假设我有一类节点,例如(事件:事件),而每个事件都有一个标签属性([字符串])。现在我可以像这样返回所有这些数组:

MATCH (event:Event) RETURN event.tags
Run Code Online (Sandbox Code Playgroud)

但是我还不明白如何将不同节点结果的输出合并到一个列表中。Cypher 能做到这样吗?当然,人们总是可以以编程方式解决这个问题,但据我了解,Cypher 提供了减少以及本机列表添加。

Fra*_*man 6

如果您可以使用APOC 库使用flatten函数进行集合:

MATCH (event:Event) 
RETURN apoc.coll.flatten(COLLECT(event.tags))
Run Code Online (Sandbox Code Playgroud)

COLLECT(event.tags)将把所有结果合并到单个列表中(标签列表的列表)

apoc.coll.flatten(..)将列表列表扁平化为单个列表

如果由于某种原因您无法使用 APOC,请使用reduce

MATCH (event:Event) 
RETURN REDUCE(s = [], tags IN COLLECT(event.tags) | s + tags)
Run Code Online (Sandbox Code Playgroud)