新的neo4j 2.0版强制联合密码查询

新的neo4j 2.0版强制联合密码查询,neo4j,cypher,Neo4j,Cypher,由于neo4j 2.0.0中的新更改,我被迫提出了此查询(而不是使用“r:”运算符的查询): start s=node(404374) 匹配项() 对于uv,r,其中r为空 返回紫外线 联合 开始s=节点(404374) 匹配(uvp:_UrlVisit)-[:会话]->(s2) 其中ID(s)ID(s2) 返回紫外线; 有没有办法一次编写此查询而不使用联合?根据@jjaderberg的建议,此查询返回正确的结果: start s=node(404374) match (s)<-[:S

由于neo4j 2.0.0中的新更改,我被迫提出了此查询(而不是使用“r:”运算符的查询):

start s=node(404374)
匹配项()
对于uv,r,其中r为空
返回紫外线
联合
开始s=节点(404374)
匹配(uvp:_UrlVisit)-[:会话]->(s2)
其中ID(s)ID(s2)
返回紫外线;

有没有办法一次编写此查询而不使用联合?

根据@jjaderberg的建议,此查询返回正确的结果:

start s=node(404374) 
match (s)<-[:SESSION]-(uv:_UrlVisit)
optional match (uv)-[r:REFERRER]->(:_UrlVisit)-[:SESSION]->(s2) 
with s,uv,r,s2
where r IS NULL OR ID(s)<>ID(s2) return uv;
start s=node(404374)
匹配(:_UrlVisit)-[:会话]->(s2)
有s,uv,r,s2
其中r为NULL或ID(s)ID(s2)返回uv;

如果您将整个可选模式放在optional match子句中,
optional match uv-[:referer]->(:_urlsit)-[:SESSION]->(s2)
,会发生什么?
start s=node(404374) 
match (s)<-[:SESSION]-(uv:_UrlVisit)
optional match (uv)-[r:REFERRER]->(:_UrlVisit)-[:SESSION]->(s2) 
with s,uv,r,s2
where r IS NULL OR ID(s)<>ID(s2) return uv;