2014-02-28 23 views
1

由于我被迫想出这个查询中的Neo4j 2.0.0的新变化(而不是所使用的查询“R?:”操作符):新的Neo4j 2.0版执行UNION暗号查询

start s=node(404374) 
match (s)<-[:SESSION]-(uv:_UrlVisit) 
optional match (uv)-[r:REFERRER]->() 
with uv, r where r IS NULL 
return uv 
UNION 
start s=node(404374) 
match (s)<-[:SESSION]-(uv:_UrlVisit)-[:REFERRER]->(uvp:_UrlVisit)-[:SESSION]->(s2) 
where ID(s)<>ID(s2) 
return uv; 

有没有什么办法可以在没有UNION的情况下将这个查询写入一次?

+1

如果你把整个可选模式可选match子句,'可选MATCH紫外线中会发生什么 - [:REFERRER] - >(: _UrlVisit) - [:SESSION] - >(s2)'? – jjaderberg

回答

1

基于@ 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;