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
如果两个节点在Cypher Neo4j中以某种方式连接,我怎么知道呢_Neo4j_Cypher - Fatal编程技术网

如果两个节点在Cypher Neo4j中以某种方式连接,我怎么知道呢

如果两个节点在Cypher Neo4j中以某种方式连接,我怎么知道呢,neo4j,cypher,Neo4j,Cypher,我有一个描述节点及其关系的图,实体-引用-实体 我想得到一个包含源实体和连接实体的列表,其中这两个实体不是直接连接的,而是以某种方式连接的 例如: a-参考-b,c-参考-a,d-参考-c。在本例中,我还希望Cypher Qry返回d-references-a 我想要的输出是: a-b c-a d-c c-b d-a d-bCypher主要是关于图形中的模式匹配。因此,您感兴趣的模式不仅包括a-b,还包括a-c-d。您可以使用可变长度匹配来执行此操作,例如: MATCH (n)-[*]-(m)

我有一个描述节点及其关系的图,实体-引用-实体

我想得到一个包含源实体和连接实体的列表,其中这两个实体不是直接连接的,而是以某种方式连接的

例如: a-参考-b,c-参考-a,d-参考-c。在本例中,我还希望Cypher Qry返回d-references-a

我想要的输出是:

a-b

c-a

d-c

c-b

d-a


d-b

Cypher主要是关于图形中的模式匹配。因此,您感兴趣的模式不仅包括a-b,还包括a-c-d。您可以使用可变长度匹配来执行此操作,例如:

MATCH (n)-[*]-(m)
RETURN n.name, m.name
这假定节点上有一个可以返回的name属性。更改任何其他相关属性的值,或者如果使用浏览器进行可视化,则只返回n,m

请注意,无论方向如何,这都将匹配关系,这意味着您将在结果和其他组合中同时获得a-d和d-a。如果只想与一个方向匹配,请使用:

MATCH (n)-[*]->(m)
RETURN n.name, m.name

使用这些方法时要小心——即使是在小图中,它们也很容易匹配大量的组合,并导致Neo4j或您的应用程序因内存耗尽等原因死亡。

谢谢Chris。我提供的用例中的关键字references引用了一个属性值为“references”的关系。虽然该图将有很多其他链接,但我担心只提取那些具有名为“RelType”的属性和值为“REFERENCES”的关系。是的,你是对的,如果我不检查这个,结果会很快增长。所以在我的查询中方向也是必须的。挑战在于,即使假定间接寻址的最大级别为5级,我也无法将*1..5与[r]子句中的关系名称合并。这方面的任何帮助都将非常有用。请尝试匹配n-[:REFERENCES*1..5]->是否有方法获取与此节点相关的关系数?像id a->x,a->y,b->x,b->y,那么a和b是连接的,并被计算为2@gjijo最好把这当作一个新问题来问