Neo4j如何找到以某种方式连接到另一个给定节点的节点

Neo4j如何找到以某种方式连接到另一个给定节点的节点,neo4j,cypher,Neo4j,Cypher,在数据库中,我有不同的不同的断开连接的图。每个图都有一个根节点(r:root{name:}),该节点具有不同的名称属性(根标签+名称属性是唯一的标识符)。我对这些图所知的唯一一件事是,每个图中都可以存在一个具有给定标签(例如:node1)的节点副本。给定根节点(r:root{name:“XYZ”})和目标标签(例如:node1),如何在不知道如何连接的情况下找到连接到name=XYZ的根的节点 我试过了 Match (n:node1)-[r*0..]-(:Root {name:"XYZ

在数据库中,我有不同的不同的断开连接的图。每个图都有一个根节点(r:root{name:}),该节点具有不同的名称属性(根标签+名称属性是唯一的标识符)。我对这些图所知的唯一一件事是,每个图中都可以存在一个具有给定标签(例如:node1)的节点副本。给定根节点(r:root{name:“XYZ”})和目标标签(例如:node1),如何在不知道如何连接的情况下找到连接到name=XYZ的根的节点

我试过了

Match (n:node1)-[r*0..]-(:Root {name:"XYZ"}) return n
但这一质疑被打断了。我不知道节点1和根之间的关系的数量和类型

编辑:


问题如上所示。圆圈内有节点标签(我省略了其他标签)。在云中我有参数。我的愿望是返回节点:node1连接到名为“pippo”的根。我只知道标签Root、node1(这不是唯一的)和Root的名称(这是唯一的)。我不能对这种方式做任何假设:node1连接到根节点。

我想你就快到了,但是你需要限制路径长度。试试这个:

match path=((n:node1)-[*0..15]-(:Root{name:"XYZ"})) return n

您不需要命名
:Root
节点,因为您没有返回任何关于它的信息。你需要摆脱对关系的命名,因为它与你给
:Root
的变量名冲突,尽管如果你不这样做的话,这可能没有什么意义。

我想你差不多做到了,但是你需要限制路径长度。试试这个:

match path=((n:node1)-[*0..15]-(:Root{name:"XYZ"})) return n


您不需要命名
:Root
节点,因为您没有返回任何关于它的信息。您需要取消对关系的命名,因为它与您提供的
:Root
变量名冲突,尽管如果您不使用它,这可能是没有意义的。

这可能是一个非常昂贵的查询。您知道这两份副本的其他属性是否相同?您可以使用它来缩小搜索范围。不,我只知道要返回的节点的标签和根的label+属性。我只需要一个查询就可以找到一个连接到另一个节点的节点,而不知道这两个节点之间有多少关系,也不知道关系的类型。你必须去掉关系部分中的
r
,因为它与第二个节点匹配中的
r
冲突;您可能还希望为路径分配一个变量,如下所示:
match path=((n:node1)-[*]-(r:Root{name:“XYZ”}))返回n
,以防您想知道从
n
r
的跳数。请查看答案上的注释。谢谢,这可能是一个非常昂贵的查询。您知道这两份副本的其他属性是否相同?您可以使用它来缩小搜索范围。不,我只知道要返回的节点的标签和根的label+属性。我只需要一个查询就可以找到一个连接到另一个节点的节点,而不知道这两个节点之间有多少关系,也不知道关系的类型。你必须去掉关系部分中的
r
,因为它与第二个节点匹配中的
r
冲突;您可能还希望为路径分配一个变量,如下所示:
match path=((n:node1)-[*]-(r:Root{name:“XYZ”}))返回n
,以防您想知道从
n
r
的跳数。请查看答案上的注释。谢谢抱歉,r:Root是我的错误,我的代码中没有。我在node1中没有任何属性。节点尚未为空。我试图通过使用
SET n.attribute1='..'
查找以添加它们,这是一个非常令人困惑的注释,以至于我不知道您正在尝试做什么。我在这里找到的任何节点都带有
节点
标签和名称
XYZ
,通过任意数量的跃点连接到带有
标签和名称
XYZ
的节点。这就是我认为你在写“给定根节点(r:root{name:“XYZ”})和目标标签(例如:node1)时的意思,我如何在不知道如何连接的情况下找到连接到name=XYZ的根的节点?”如果你想要不同的东西,那么写不同的东西。你说“节点是空的”是什么意思"? 你是说它根本不存在吗?或者它确实存在但没有任何属性?或者别的什么?它存在但没有任何属性。name=XYZ指的是根节点。对不起,我的英语能力不太好。好吧,如果你要查找的节点名称不相同,那么你是在问不可能的问题。如果您事先知道其中一个节点没有定义该名称,则无法找到具有相同名称的两个节点。你到底想找什么?对不起,r:Root是我的错误,我的代码中没有。我在node1中没有任何属性。节点尚未为空。我试图通过使用
SET n.attribute1='..'
查找以添加它们,这是一个非常令人困惑的注释,以至于我不知道您正在尝试做什么。我在这里找到的任何节点都带有
节点
标签和名称
XYZ
,通过任意数量的跃点连接到带有
标签和名称
XYZ
的节点。这就是我认为你在写“给定根节点(r:root{name:“XYZ”})和目标标签(例如:node1)时的意思,我如何在不知道如何连接的情况下找到连接到name=XYZ的根的节点?”如果你想要不同的东西,那么写不同的东西。你说“节点是空的”是什么意思"? 你是说它根本不存在吗?或者它确实存在但没有任何属性?或者别的什么?它存在但没有任何属性。name=XYZ指的是根节点。抱歉,我的英语能力不太好。如果您试图查找的节点名称不相同,那么