在Neo4j中按字段分组

时间:2014-04-13 08:22:45

标签: neo4j cypher

我正在使用Neo4j 1.8.3

我正在运行一个返回数据的查询,如

A   1  X
A   2  Y
B   3  Z
C   4  Q
C   5  X

我希望数据显示为

A 1,2  X,Y
B 3    Z
C 4,5  Q,X

请告诉我们我们如何才能做到这一点在Cypher。 提前谢谢。

2 个答案:

答案 0 :(得分:3)

这是我在遇到这个问题时所做的事情:

就我不知道而言,你无法在密码中一次性完成这项任务。您将需要使用WITH语句来分解查询,让cypher在中途收集一些节点并在后续匹配时执行收集操作。那是什么意思?考虑这个例子:

如果您当前的查询是这样的:

MATCH (a)--(b)--(c) RETURN a,b,c

然后您必须将其更改为以下

MATCH {{ Perform match here just for node type 'a' }} WHERE {{ conditions if any }}
WITH a
MATCH (a)--{{ Perform match for 'b' and 'c' here using 'a' }}
RETURN a,collect(b) as first, collect(c) as second
ORDER BY length(first, second) DESC

如果你理解我想说的话,那就去试试吧。否则,最好的方法是在Neo4j Console中创建一个样本数据集,启动查询并在此处共享,这样我们就可以确切地看到您的反对意见。

答案 1 :(得分:2)

如果你的原始RETURN条款是:

RETURN a, b, c

尝试:

RETURN a, collect(b), collect(c)