Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/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 Cypher将结果与“difer”匹配;加上;而没有",;加上;_Neo4j_Cypher - Fatal编程技术网

Neo4j Cypher将结果与“difer”匹配;加上;而没有",;加上;

Neo4j Cypher将结果与“difer”匹配;加上;而没有",;加上;,neo4j,cypher,Neo4j,Cypher,首先,我为这个笨拙的标题感到抱歉,我想不出更好的方法来揭露它 问题是,在单个匹配中查询cypher---result和在匹配中拆分cypher---match---result结构时,我会得到不同的结果 比赛结果忽略了某些结果 我的代码: 匹配---结果查询 match (up:U)-[r1:COCS]->(op:O)-[r2:CCLS]->(jp:J)-[r3:PRE]->(n:J{id:"AC"})<-[j2o:CCLS]-(o:O)<-[o2u:COCS]-(

首先,我为这个笨拙的标题感到抱歉,我想不出更好的方法来揭露它

问题是,在单个匹配中查询cypher---result和在匹配中拆分cypher---match---result结构时,我会得到不同的结果

比赛结果忽略了某些结果

我的代码:

匹配---结果查询

match (up:U)-[r1:COCS]->(op:O)-[r2:CCLS]->(jp:J)-[r3:PRE]->(n:J{id:"AC"})<-[j2o:CCLS]-(o:O)<-[o2u:COCS]-(u:U)
return up,type(r1), op, type(r2), jp, type(r3), n, type(j2o), o, type(o2u), u
match(up:U)-[r1:COCS]->(op:O)-[r2:CCLS]->(jp:J)-[r3:PRE]->(n:J{id:AC})(jp:J)-[r3:PRE]->(n:J{id:AC})
带up,r1,op,r2,jp,r3,n

match(n)我能为这种看似反常的行为想出一个解释

引自:

在模式匹配时,Neo4j确保不包括 同一图形关系在单个图形中多次出现 图案在大多数用例中,这是一件明智的事情

在第一次查询中,以下子模式出现两次(一次出现在
(n)
节点的任一侧):

由于第一个查询由一个模式组成,Cypher将防止相同的
COCS
关系在同一结果行中出现两次。在您的情况下,这会阻止某些行显示在结果中

您的第二个查询将拆分原始查询,以便上述子模式不再在单个模式中出现两次。因此,您得到了“完整”的结果

因此,这里的教训是:如果您使用重复关系子模式的模式,请确保您确实打算筛选出同一关系实例多次出现的行。

match (up:U)-[r1:COCS]->(op:O)-[r2:CCLS]->(jp:J)-[r3:PRE]->(n:J{id:"AC"}) 
 with up, r1, op, r2, jp, r3, n 
match(n)<-[j2o:CCLS]-(o:O)<-[o2u:COCS]-(u:U)
return up,type(r1), op, type(r2), jp, type(r3), n, type(j2o), o, type(o2u), u
(:U)-[:COCS]->(:O)