Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 按|(管道)与|::(管道冒号)分隔关系类型_Neo4j_Cypher - Fatal编程技术网

Neo4j 按|(管道)与|::(管道冒号)分隔关系类型

Neo4j 按|(管道)与|::(管道冒号)分隔关系类型,neo4j,cypher,Neo4j,Cypher,那个 要匹配多种类型中的一种,您可以通过将它们与管道符号链接在一起来指定 但给出了一个示例,其中使用的分隔符实际上是。:,而不仅仅是。 至少在我的数据集上,似乎和Neo4j文档中的一样。但这引发了一个问题:为什么Neo4j会实现两个类似的语法来做完全相同的事情 上面两个语法的行为实际上是相同的,还是它们之间有一个细微的差异,而这在我的数据集中没有显示出来?不管答案是什么,有没有记录在案?如果它们之间没有区别,那么Cypher支持这两种语法的理由是什么呢?AFAIK-没有区别 理性——向后兼容 随

那个

要匹配多种类型中的一种,您可以通过将它们与管道符号链接在一起来指定

但给出了一个示例,其中使用的分隔符实际上是
。:
,而不仅仅是

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


上面两个语法的行为实际上是相同的,还是它们之间有一个细微的差异,而这在我的数据集中没有显示出来?不管答案是什么,有没有记录在案?如果它们之间没有区别,那么Cypher支持这两种语法的理由是什么呢?

AFAIK-没有区别

理性——向后兼容

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

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

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

一般建议-不要使用不推荐使用的语法。 如果文档中没有明确提到语法,则可以将其视为已弃用


文档中的弃用页面-

鉴于文档描述了一种语法,但实际演示了另一种语法,我不会将两者解释为弃用。分隔符是
。并且关系类型是
:type
。因此,将所有内容链接在一起将导致类似于
:TYPE1 |:TYPE2 |:TYPE3
。它看起来更符合逻辑,尤其是当您将
|
看作
运算符(就像在许多编程语言中一样)时。
MATCH (wallstreet { title:'Wall Street' })<-[:ACTED_IN|:DIRECTED]-(person)
RETURN person
MATCH (wallstreet { title:'Wall Street' })<-[:ACTED_IN|DIRECTED]-(person)
RETURN person
node-[rel]-otherNode