我正在使用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。 提前谢谢。
答案 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)