2015-09-26 44 views
2

考慮以下形式的Cypher查詢:Neo4j的:只返回的考生,不是所有的組合

MATCH a-->b,a-->c,a-->d WHERE [some conditions on a, b, c and d] RETURN id(a),id(b),id(c),id(d)

上面的查詢,可能不如預期,將返回候選節點的所有組合的,b,c和d。因此,例如,如果有三個候選b和四個候選c,那麼查詢返回的總行數將是3 x 4 = 12。如何調整它,以便每個別名的不同匹配節點(a到d)只返回一次?

下面的查詢是不是有效的,但應該澄清我心目中:

MATCH a-->b,a-->c,a-->d WHERE [some conditions on a, b, c and d] RETURN distinct id(a), distinct id(b), distinct id(c), distinct id(d)

回答

1

您可以使用不同的聚合。

MATCH a-->b,a-->c,a-->d 
WHERE [some conditions on a, b, c and d] 
RETURN collect(distinct id(a)) as ids_a,collect(distinct id(b)) as ids_b, 
     collect(distinct id(c)) as ids_c,collect(distinct id(d)) as ids_d; 
+0

太棒了!這正是我需要的。謝謝邁克爾。 –