Neo4j 将字段值分组到数组中
我有一个节点Xn与节点Yn有关系的图。现在我想查询所有节点Xn及其与节点Yn的关系。Neo4j 将字段值分组到数组中,neo4j,cypher,Neo4j,Cypher,我有一个节点Xn与节点Yn有关系的图。现在我想查询所有节点Xn及其与节点Yn的关系。 我的查询如下所示: 匹配n=(:X)-[:RELATIONSHIP1 |:RELATIONSHIP2]->(:Y)返回n 结果是: ╒══════════════════════════════╕ │n │ ╞══════════════════════════════╡ │[{name: x1}, {name: y1}] │ ├────────
我的查询如下所示:
匹配n=(:X)-[:RELATIONSHIP1 |:RELATIONSHIP2]->(:Y)返回n
结果是:
╒══════════════════════════════╕
│n │
╞══════════════════════════════╡
│[{name: x1}, {name: y1}] │
├──────────────────────────────┤
│[{name: x1}, {name: y2}] │
├──────────────────────────────┤
│[{name: x1}, {name: y3}] │
├──────────────────────────────┤
│[{name: x2}, {name: y4}] │
├──────────────────────────────┤
│[{name: x2}, {name: y5}] │
├──────────────────────────────┤
│[{name: x2}, {name: y6}] │
├──────────────────────────────┤
│[{name: x2}, {name: y7}] │
├──────────────────────────────┤
我将所有节点Xn及其相关的Yn都放在一行中。但我真正想要的是:
╒══════════════════════════════╕
│n │
╞══════════════════════════════╡
│[{name: x1}, [{name: y1}, │
│ {name: y2}, {name: y3}] │
├──────────────────────────────┤
│[{name: x2}, [{name: y4}, │
│ {name: y2}, {name: y5}, │
│ {nbame: y6}, {name: y7}] │
├──────────────────────────────┤
在这里,Xn的所有相关节点Yn都加入一个数组,然后分配给相应的Xn。如何使用Cypher实现这一点?您需要使用以下函数进行聚合:
match (nx:X)-[:RELATIONSHIP1|:RELATIONSHIP2]->(ny:Y)
return nx as X,
collect(distinct ny) as Y
您需要使用以下函数进行聚合:
match (nx:X)-[:RELATIONSHIP1|:RELATIONSHIP2]->(ny:Y)
return nx as X,
collect(distinct ny) as Y