首页 > 解决方案 > Neo4J - 多个联合的后分页

问题描述

您好,我正在尝试对包含多个联合的 Cypher 进行分页:

MATCH(node:D1593731983259)
    WHERE toLower(node.name) CONTAINS {searchTerm}
RETURN node {.*}
UNION
MATCH(node:D1593031169841)
    WHERE toLower(node.name) CONTAINS {searchTerm}
RETURN node {.*}

我想对整个结果进行分页以限制所有联合可以拥有的结果数量,例如:

MATCH(node:D1593731983259)
    WHERE toLower(node.name) CONTAINS {searchTerm}
RETURN node {.*}
UNION
MATCH(node:D1593031169841)
    WHERE toLower(node.name) CONTAINS {searchTerm}
RETURN node {.*}
skip 20 limit 20 //<------------ like this

但是该分页仅适用于最后一场比赛(node:D1593031169841),而不适用于其余比赛。

有人可以帮我解决这个问题吗?

我正在使用 Neo4J 版本 3.5.14

谢谢你。

标签: neo4jcypher

解决方案


如果您可以迁移/升级到 neo4j 4.x,则可以利用新增的对后联合处理的支持:

CALL {
  MATCH(node:D1593731983259)
    WHERE toLower(node.name) CONTAINS $searchTerm
  RETURN node
  UNION
  MATCH(node:D1593031169841)
    WHERE toLower(node.name) CONTAINS $searchTerm
  RETURN node
}
RETURN node
SKIP 20 LIMIT 20

推荐阅读