[英]Inconsistent cypher query results in neo4j
為了說明此問題,請創建標記為z的千個節點,其中包含遞增數字屬性zid。
FOREACH (i IN range(1, 1000)| CREATE (z:z { zid: i }));
現在使用1到1000之間的隨機zid值找到一個節點。
MATCH (n:z { zid: round(rand()*1000)})
RETURN n;
上面的cypher返回不一致的結果,有時沒有返回節點,有時會返回多個節點。
如下調整密碼產生一致的結果。
WITH round(rand()*1000) AS x
MATCH (n:z { zid: x })
RETURN x, n;
第一個密碼查詢有什么問題?
您在第一個查詢中收到不一致結果的原因與Neo4j如何評估Cypher查詢有關。 當使用WHERE
或簡明語法時,將為z
的標簽索引中的每個項評估函數round(rand()*1000)
。 使用WITH
子句時,該函數將被計算一次。
話雖這么說,這看起來像是一個特定於rand()
函數的bug。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.