我想知道 Neo4j 是否可以实现以下功能。
假设我有一类节点,例如(事件:事件),而每个事件都有一个标签属性([字符串])。现在我可以像这样返回所有这些数组:
MATCH (event:Event) RETURN event.tags
Run Code Online (Sandbox Code Playgroud)
但是我还不明白如何将不同节点结果的输出合并到一个列表中。Cypher 能做到这样吗?当然,人们总是可以以编程方式解决这个问题,但据我了解,Cypher 提供了减少以及本机列表添加。
如果您可以使用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)