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

Dra*_*gos 0 neo4j cypher

我有 2 个节点类型,比如说 A 和 B,以及与属性的关系,我们将其称为“a_has_b”,属性为“value”

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

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

我还想从关系中获取按属性排序的前 n 个 B

MATCH (a:A)-[r:a_has_b]->(b:B)
WHERE a.id='123'
RETURN r, b
ORDER BY r.value
LIMIT 3
Run Code Online (Sandbox Code Playgroud)

现在,很明显我做了两次同样的事情,改变了返回值。

我怎样才能将它们结合在一起以获得所需的结果?

std*_*b-- 5

您可以结合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
Run Code Online (Sandbox Code Playgroud)