在Neo4j cypher查询中使用表达式表示限制

在Neo4j cypher查询中使用表达式表示限制,neo4j,cypher,Neo4j,Cypher,我的密码查询是 start item= node:jobSearch ("title:Job*") WITH collect(item) as items limit 10 RETURN items as job union start item2= node:jobSearch ("title:Job*") WITH collect(item2) as item2s , count(item2) as paths match (job1:Job)-[relation]-(relationN

我的密码查询是

start item= node:jobSearch ("title:Job*") WITH collect(item) as items limit 10  RETURN items as job union start item2= node:jobSearch ("title:Job*") WITH collect(item2) as item2s , count(item2) as paths  match (job1:Job)-[relation]-(relationNode)  where 
(relationNode.name IN ['java','Dance','Programming'] OR relation.duration IN 
['java','Dance','Programming']) AND  NOT (job1 IN item2s) AND paths < 10   RETURN  job1  as job limit 8
start item=node:jobSearch(“title:Job*”)和collect(item)作为项限制10个返回项作为作业联合开始项2=node:jobSearch(“title:Job*”)和collect(item2)作为项2,计数(item2)作为路径匹配(job1:Job)-[relation](relationNode),其中
(['java'、'Dance'、'Programming']中的relationNode.name或中的relation.duration)
['java'、'Dance'、'Programming'])和NOT(item2s中的job1)以及小于10的路径将job1作为作业限制8返回
在上面的查询中我使用了limit8,我想使用10-path。
我如何使用它呢?

因此,似乎您应该能够通过limit子句中的表达式来实现这一点,或者通过在最后一个
with
语句中计算正确的整数来实现(例如,
with(10个路径)as resultCount(…)limit resultCount
),但我测试了它,它无法工作

为了好玩,我查看了neo4j源代码,看看是否遗漏了什么。您可以看到一些用于子句和cypher语言本身解析的规则

坏消息是
LIMIT
表达式需要一个无符号整数文本或一个参数。所以基本上你不能做你要求做的事情,除非你在一个单独的查询中计算
(10个路径)
,然后在这个查询中输入一个
{resultCount}
参数,然后给它预计算的值。这可能是一个没有太多价值的大量工作

从好的方面来说,除非你的结果真的非常巨大,否则最简单的方法可能是
限制10
,并在结果集中包含整数
路径
,这样使用这些结果的代码就知道忽略更多的结果