2013-05-20 40 views
2

此查詢用於在Neo4j 1.9中工作,但在CREATE UNIQUEMATCH之間沒有WITH陳述。neo4j 2.0 Cypher查詢是否需要CREATE UNIQUE和MATCH之間的WITH語句?

START left=node:node_auto_index(Uname = "test"), 
right=node:node_auto_index("StoreId:(\"com.google.android.street\",\"com.google.android.youtube.googletv\")") 
CREATE UNIQUE left-[:Owns]->(Device {DeviceId:"myDevice"}) <-[r:Installed]-right 
WITH left, right 
MATCH right-[:InstanceOf]->parents<-[?:Alternative]-altParents<-[:InstanceOf]-alternatives 
RETURN right AS App; 

爲什麼會出現在2.0的變化,與WITH關鍵字查詢做事的正確方法是什麼?這在性能上有什麼不同嗎?我假設沒有。

+0

如果你在2.0中放棄了WITH,會發生什麼? –

+0

我收到一個錯誤,說''期待但得到:代替' – MonkeyBonkey

+0

,如果我離開'WITH'I得到:錯誤:預期有效的查詢正文 「MATCH right - [:InstanceOf] - > parents < - [?: Alternative] -altParents < - [:InstanceOf] -alternatives「 –

回答

1

不幸的是,錯誤發生在1.9解析器而不是2.0解析器。 Cypher不允許你在相同的子查詢中混合讀寫,並且START..MATCH ... CREATE UNIQUE ... MATCH就是這樣做的。

新的2.0解析器更嚴格並正確拒絕此查詢。