Cypher返回总节点数以及有限集

时间:2015-01-06 18:55:48

标签: neo4j cypher

是否可以在单个密码查询中提取有限的节点集和节点总数?

match (n:Molecule) with n, count(*) as nb limit 10 return {N: nb, nodes: collect(n)}

上述查询正确返回节点,但返回1作为节点数。我当然理解为什么它返回1,因为没有分组,但无法弄清楚如何纠正它。

2 个答案:

答案 0 :(得分:9)

以下查询返回整行数的计数器(我猜是需要的)。然后它再次匹配并限制您的搜索,但原始计数器仍然可用,因为它是通过WITH语句传递的。

MATCH 
    (n:Molecule)
WITH 
    count(*) AS cnt
MATCH 
    (n:Molecule)
WITH 
    n, cnt LIMIT 10
RETURN 
    { N: cnt, nodes:collect(n) } AS molecules

答案 1 :(得分:1)

这是另一种解决方案:

match (n:Molecule) return {nodes: collect(n)[0..5], n: length(collect(n))}
对于30k节点,

84 ms,更短但不如wassgren提出的上述节点有效。