我有一个包含数千个节点的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
子句之前拦截节点计数并返回它?
答案 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]