neo4j 如何限制然后做子查询?

kuhbmx9i  于 2023-08-04  发布在  其他
关注(0)|答案(2)|浏览(140)

我发现自己寻找的一个典型模式是,我想找到结果,做一些分页(跳过/限制),然后做一些额外的“连接”来填充相关字段。目前,类似

MATCH (s:Something)
CALL {
  WITH s
  MATCH (s)-[:SOMETHING]->(o:Other)
  RETURN o
}
SKIP 1000
LIMIT 50

字符串
似乎导致子查询运行1000(跳过的s节点)+ 50(限制)。我认为理想情况下,我只需要为我真正想要的50个节点运行子查询,我尝试在前面跳过,但似乎无法获得正确的语法。我该怎么做?

ecfdbz9o

ecfdbz9o1#

外部查询还需要RETURN子句。

MATCH (s:Something)
CALL {
  WITH s
  MATCH (s)-[:SOMETHING]->(o:Other)
  RETURN o
}
RETURN o   // add this line
SKIP 1000
LIMIT 50

字符串

w46czmvw

w46czmvw2#

这将只使用前1000个之后的50个Something节点,并且只执行CALL子查询50次:

MATCH (s:Something)
WITH s
SKIP 1000
LIMIT 50
CALL {
  WITH s
  MATCH (s)-[:SOMETHING]->(o:Other)
  RETURN o
}
RETURN s, o

字符串

相关问题