簡體   English   中英

neo4j中的cypher查詢結果不一致

[英]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.

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