Neo4J:只返回候选人,而不是所有组合

时间:2015-09-26 19:17:26

标签: neo4j cypher reduce

以下列形式考虑Cypher查询:

<script type="text/javascript" src="//cdn.jsdelivr.net/jquery/1/jquery.min.js"></script> <script type="text/javascript" src="//cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/bootstrap/latest/css/bootstrap.css" /> <!-- Include Date Range Picker --> <script type="text/javascript" src="//cdn.jsdelivr.net/bootstrap.daterangepicker/2/daterangepicker.js"></script> <script type="text/javascript"> $(function() { $("#<%= txtName.ClientID %>").daterangepicker(); }); </script>

上面的查询,可能是预期的,将返回a,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 id(a),id(b),id(c),id(d)

1 个答案:

答案 0 :(得分: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;