Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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 如何区分<-[r] ->;和-[r]-在密码查询中_Neo4j_Cypher - Fatal编程技术网

Neo4j 如何区分<-[r] ->;和-[r]-在密码查询中

Neo4j 如何区分<-[r] ->;和-[r]-在密码查询中,neo4j,cypher,Neo4j,Cypher,我认为在Cypher关系中“表示”,而关系“-[r]-“表示”。但它们返回相同的结果 start n=node(1), m=node(2) create n-[:no_direction]-m; start n=node(1), m=node(2) create n-[:left]->m; start n=node(1), m=node(2) create n<-[:both_direction]->m; start n=node(1), m=node(2) match n-

我认为在Cypher关系中“表示”,而关系“-[r]-“表示”。但它们返回相同的结果

start n=node(1), m=node(2) create n-[:no_direction]-m;
start n=node(1), m=node(2) create n-[:left]->m;
start n=node(1), m=node(2) create n<-[:both_direction]->m;

start n=node(1), m=node(2) match n-[r]-m return r;
start n=node(1), m=node(2) match n<-[r]->m return r;
start n=node(1),m=node(2)创建n-[:no_方向]-m;
启动n=节点(1),m=节点(2)创建n-[:left]>m;
开始n=节点(1),m=节点(2)创建nm;
开始n=节点(1),m=节点(2)匹配n-[r]-m返回r;
开始n=节点(1),m=节点(2)匹配nm返回r;
“match n-[r]-m return r”和“match nm return r”都返回3条记录。我认为“match n-[r]-m return r”应该返回3条记录,“match nm return r”应该只返回一条记录


在Cypher查询中,如何区分和-[r]-之间的关系?

不确定,但我猜您在这里对关系的概念有一些误解。Neo4j中的关系始终是定向的,这条规则没有例外

在查询方面,您可以忽略它是定向的这一事实

start n=node(1), m=node(2) create n-[:RELTYPE]-m;
start n=node(1), m=node(2) create n<-[:RELTYPE]->m;
start n=node(1),m=node(2)创建n-[:RELTYPE]-m;
开始n=节点(1),m=节点(2)创建nm;
(语法
()()
在任何地方都没有记录)

MATCH n-[:RELTYPE]-m
表示“在1和2之间的任何方向(传入或传出)匹配具有类型RELTYPE的任何关系”


在上面的示例中,如果您得到3个结果,这只意味着节点1和节点2之间有3个任意类型和任意方向的关系。

不确定,但我猜您在这里对关系的概念有一些误解。Neo4j中的关系始终是定向的,这条规则也不例外

在查询方面,您可以忽略它是定向的这一事实

start n=node(1), m=node(2) create n-[:RELTYPE]-m;
start n=node(1), m=node(2) create n<-[:RELTYPE]->m;
start n=node(1),m=node(2)创建n-[:RELTYPE]-m;
开始n=节点(1),m=节点(2)创建nm;
(语法
()()
在任何地方都没有记录)

MATCH n-[:RELTYPE]-m
表示“在1和2之间的任何方向(传入或传出)匹配具有类型RELTYPE的任何关系”


在上面的示例中,如果得到3个结果,这意味着在节点1和节点2之间有3个任意类型和任意方向的关系。

我想补充Stefan的正确答案,即您的行

start n=node(1), m=node(2) create n-[:no_direction]-m;

从第一个节点的角度创建传入关系,这可能会造成一些混乱。这只是默认设置,因为您没有提供明确的方向,而且正如Stefan已经说过的,关系必须是定向的。

我要补充Stefan的正确答案,即您的线路

start n=node(1), m=node(2) create n-[:no_direction]-m;

从第一个节点的角度创建传入关系,这可能会造成一些混乱。这只是默认设置,因为您没有提供明确的方向,而且正如Stefan所说,关系必须有方向。

是的,语法“()()“在任何地方都没有记录,Neo4j中的关系始终是直接的。但问题是为什么Neo4j不使用“MATCH nm”来显式表示“在1和2之间的两个方向(传入和传出)上都具有类型RELTYPE的关系”?“双向”是一种方向。匹配语句表示一条路径,
nm
因此代表2个节点和1个rel。如果您只想匹配两个具有不同方向的关系,请使用
match n-[:TYPE]->m`n-[:TYPE]->mYes,语法“()()”没有记录在任何地方,并且Neo4j中的关系始终是定向的。但问题是为什么Neo4j不使用“MATCH nm”来显式表示“在1和2之间的两个方向(传入和传出)上都具有类型RELTYPE的关系”?“双向”是一种方向。匹配语句表示一条路径,
nm
因此代表2个节点和1个rel。如果只想匹配两个方向不同的关系,请使用
match n-[:TYPE]->m`n-[:TYPE]->m