Neo4j Cypher 1.8版:关系标识符的可能错误

时间:2012-08-30 15:55:56

标签: neo4j cypher

http://console.neo4j.org/r/yx62bk

在上图中,查询

start n=node(7,8,9) 
match n-[objectScore:score]->o-[:object_of_destination]->d<-[:destination_score]-n, 
o-[:instance_of]->ot, o-[:date]->oDate, d-[:date]->dDate where ot.name='HOTEL'  
return n, o, objectScore,  d;

将o返回为null。

更改查询以删除关系标识符 - objectScore

start n=node(7,8,9) 
match n-[:score]->o-[:object_of_destination]->d<-[:destination_score]-n,
o-[:instance_of]->ot, o-[:date]->oDate, d-[:date]->dDate where ot.name='HOTEL'  
return n, o, objectScore,  d;

并且输出正确地返回o节点。

对于我的情景,我需要他们两个。不确定怎么做?对此有任何建议。

1 个答案:

答案 0 :(得分:0)

好的发现。我们在github上跟踪Cypher问题,所以我在那里打开了一个问题:https://github.com/neo4j/community/issues/837

非常感谢报道!

编辑:我发现了问题。具有讽刺意味的是,一个简单的解决方法是引入可选关系。问题出在Cypher可以使用的一个匹配器中,并且通过将一个模式标记为可选,可以强制Cypher使用不同的匹配器。如果你想

所以,将你的MATCH改为:

match n-[objectScore:score]->o-[:object_of_destination]->d<-[:destination_score]-n, 
      o-[:instance_of]->ot, 
      o-[:date]->oDate, 
      d-[?:date]->dDate 

正在进行真正的修复。