Neo4J Cypher将2个查询合并为一个

时间:2016-10-25 12:14:27

标签: neo4j cypher

我有2个节点类型,比方说A和B,以及与属性的关系,让我们用属性'value'称它为'a_has_b'

首先,我想计算A类特定节点的关系数。

MATCH (a:A)-[r:a_has_b]->(b:B) 
WHERE a.id='123'
RETURN COUNT(r) as count

我还希望从关系

中获取属性所排序的前n个B.
MATCH (a:A)-[r:a_has_b]->(b:B)
WHERE a.id='123'
RETURN r, b
ORDER BY r.value
LIMIT 3

现在,显然我做了两次相同的事情,改变了返回值。

如何将它们组合在一起以获得所需的结果?

1 个答案:

答案 0 :(得分:4)

您可以合并collectrange

MATCH  (a:A)-[r:a_has_b]->(b:B) 
       WHERE a.id='123'
WITH   a, 
       r, 
       b 
       ORDER BY r.value
RETURN a, 
       COUNT(r) AS count, 
       COLLECT([r,b])[0..3] AS rels