簡體   English   中英

在Neo4j cypher查詢中使用表達式限制

[英]Using expression for limit in Neo4j cypher query

我的密碼查詢是

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 - 路徑。 我怎么用這個?

因此,您似乎應該能夠使用limit子句中的表達式執行此操作,或者可能通過在上一個WITH語句中計算正確的整數(例如, WITH (10-paths) as resultCount (...) limit resultCount )但我測試了它,它將無法正常工作。

只是為了踢,我查看neo4j源代碼,看看我是否遺漏了一些東西。 在這個源文件中,您可以看到一些條款和解密密碼語言本身的規則。

壞消息是LIMIT表達式要求無符號整數文字或參數。 所以基本上你不能做你要做的事情,除非你在一個單獨的查詢中計算(10-paths) ,然后在{resultCount}參數中加入該查詢,然后給它預先計算的值。 這可能是很多工作,沒有多大價值。

從好的方面來說,除非你的結果非常巨大,否則最簡單的就是LIMIT 10並在結果集中包含整數paths ,以便使用這些結果的代碼知道忽略了比這更多的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM