使用LIMIT子句从查询中获取结果

时间:2017-06-10 22:30:53

标签: neo4j count cypher

我有一个包含数千个节点的Neo4j数据库。

我正在使用此查询来查找在所需字段中包含一些文本的节点:

MATCH (n:MYNODE)
WHERE n.myfield CONTAINS {textToSearch} 
RETURN n
ORDER BY n.myfield ASC 
LIMIT 50

此查询有效,并返回前50个结果或按n.myfield返回。

假设340个节点符合搜索条件:返回前50个节点。还有办法还可以归还总数吗?我希望将50个节点和总计数(340)用于显示目的。

我会像这样做第二个查询:

MATCH (n:MYNODE)
WHERE n.myfield CONTAINS {textToSearch} 
RETURN count(n)

有没有办法避免第二个查询并将此结果包含在第一个查询中? Neo4j应该在第一个查询中将它们限制为50之前找到所有340个节点,那么有没有办法在应用LIMIT子句之前拦截节点计数并返回它?

1 个答案:

答案 0 :(得分:0)

这样的事情怎么样?订购结果并将其放入集合中。然后返回集合的大小和集合中的前50个项目。

MATCH (n:MYNODE)
WHERE n.myfield CONTAINS {textToSearch}
WITH n
ORDER BY n.myfield
WITH COLLECT(n) as matched
RETURN size(matched), matched[..50]