作为我当前Neo4j Cypher查询的结果,我有以下具有节点的行:
WITH node, rootNode, resultNode
现在,我需要将这个结构转换为以下内容:
>
GROUP BY结果节点
(因为结果节点
可能是重复的)
对于每个结果节点
组,我需要创建一个集合,该集合将包含以下公式的节点:
将node
添加到集合中,如果node NOT EQUAL结果Node
如果rootNode不是EQUAL结果Node,则将rootNode
添加到集合中
所以,作为结果,我需要这样的东西:
resultNode1, {node1, node2, ..., rootNode1, rootNode2...}
resultNode2, {node2...}
resultNode3, {}
resultNodeN, {nodeN..., rootNodeN}
...
请帮助使用Cypher构建这样的查询
你可以试试这个:
结果节点
,将节点
和rootNode
收集在一个列表中。node
和rootNode
的列表。结果节点
匹配的节点。像这样:
WITH resultNode, COLLECT(node) AS nodes, COLLECT(rootNode) AS rootNodes
WITH resultNode, apoc.coll.unionAll(nodes, rootNodes) AS allNodes
RETURN resultNode, [x IN allNodes WHERE x <> resultNode | x ] AS result
相应地更新WHERE
子句中的条件。