Neo4j Cypher将结果与“difer”匹配;加上;而没有",;加上;
首先,我为这个笨拙的标题感到抱歉,我想不出更好的方法来揭露它 问题是,在单个匹配中查询cypher---result和在匹配中拆分cypher---match---result结构时,我会得到不同的结果 比赛结果忽略了某些结果 我的代码: 匹配---结果查询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]-(
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)