我的密码查询是
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
我在上面的查询中使用了限制8,我想使用10 - 路径。 我怎么用这个?
答案 0 :(得分:4)
所以看起来你应该能够使用limit子句中的表达式,或者可能通过计算上一个WITH
语句中的正确整数(例如WITH (10-paths) as resultCount (...) limit resultCount
),但我对此进行了测试,但它没有成功。
只是为了踢,我查看neo4j源代码,看看我是否遗漏了什么。 In this source file你可以看到一些关于cypher语言本身的子句和解析的规则。
坏消息是LIMIT
表达式需要无符号整数文字或参数。所以基本上你不能做你要求做的事情,除非你在单独的查询中计算(10-paths)
,然后在{resultCount}
参数中加入LIMIT 10
参数,然后给它预先计算的值。这可能是很多工作,没有多大价值。
从好的方面来说,除非你的结果非常庞大,否则最简单的只是paths
并且在结果集中包含整数{{1}},以便使用这些结果的代码我知道要忽略更多的结果。