将字段值分组到数组

时间:2016-10-30 10:15:02

标签: neo4j cypher

我的节点Xn与节点Yn有关系。现在我想查询所有节点Xn与节点Yn的关系 我的查询如下所示: match n=(:X)-[:RELATIONSHIP1|:RELATIONSHIP2]->(:Y) return 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实现这个目标?

1 个答案:

答案 0 :(得分:3)

您需要使用collect函数进行聚合:

match (nx:X)-[:RELATIONSHIP1|:RELATIONSHIP2]->(ny:Y)
return nx as X, 
       collect(distinct ny) as Y