neo4j 2.0 Cypher查询是否需要CREATE UNIQUE和MATCH之间的WITH语句?

时间:2013-05-20 15:44:33

标签: neo4j cypher

此查询曾用于在WITHCREATE UNIQUE语句之间没有MATCH语句的Neo4j 1.9中工作。

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关键字查询正确的做事方式?这在性能方面有什么不同吗?我假设没有。

1 个答案:

答案 0 :(得分:1)

不幸的是,错误在于1.9解析器而不是2.0解析器。 Cypher不允许您在同一个子查询中混合读取和写入,并且START..MATCH ... CREATE UNIQUE ... MATCH就是这样。

新的2.0解析器更严格,并且正确拒绝此查询。