【问题标题】:Getting results count from a query with LIMIT clause使用 LIMIT 子句从查询中获取结果计数
【发布时间】:2017-06-10 22:30:53
【问题描述】:

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

【问题讨论】:

    标签: neo4j count cypher


    【解决方案1】:

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

    【讨论】:

    • 分页使用 SKIP 和 SIZE 怎么样?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    • 1970-01-01
    • 2013-10-07
    • 2011-08-21
    • 1970-01-01
    相关资源
    最近更新 更多