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



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

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

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

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

假设 340 个节点与搜索条件匹配:返回前 50 个节点。有没有办法也返回总数?我希望将 50 个节点与总数 (340) 一起用于显示目的。

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

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

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

这样的事情怎么样。对结果进行排序并将其放入集合中。然后返回集合的大小和集合中的前 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]

最新更新