通过|分隔关系类型(管道)vs | :(管道冒号)

时间:2016-02-15 11:15:20

标签: neo4j cypher

<{3}}

  

要匹配多种类型中的一种,您可以通过将它们与管道符号|

链接在一起来指定

但举例说明使用的分隔符实际上是|:,而不只是|

MATCH (wallstreet { title:'Wall Street' })<-[:ACTED_IN|:DIRECTED]-(person)
RETURN person

在我的本地Neo4j浏览器中进行试验,似乎两个分隔符(||:)的行为相同;即查询

MATCH (wallstreet { title:'Wall Street' })<-[:ACTED_IN|DIRECTED]-(person)
RETURN person

似乎与Neo4j文档中的那个相同,至少在我的数据集上。但这引发了为什么Neo4j会实现两个相似的语法来完成同样的事情的问题。

上面两种语法的行为实际上是否相同,或者它们之间是否存在细微差别,而这些差异并没有显示在我的数据集上?无论答案是什么,它是否记录在任何地方?如果它们之间没有区别,那么Cypher支持这两种语法的理由是什么?

1 个答案:

答案 0 :(得分:0)

AFAIK - 没有差异。

理性 - 向后兼容。

随着时间的推移,Cypher语言已经发展。 如果我没记错的话,有~3种Cypher语言的实现。

因此,为了允许用户迁移到新的Neo4j版本而不重写所有查询,Cypher保留了旧的语法支持。

例如,在过去(&lt; 3.0.0)中,您可以使用“裸节点”语法:

node-[rel]-otherNode

一般建议 - 请勿使用已弃用的语法。 如果文档中没有明确提到语法 - 可以将其视为已弃用。

文档中的弃用页面 - http://neo4j.com/docs/stable/deprecations.html