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
Graph 查找特定节点的所有子节点,直到叶节点_Graph_Neo4j_Cypher_Graph Databases - Fatal编程技术网

Graph 查找特定节点的所有子节点,直到叶节点

Graph 查找特定节点的所有子节点,直到叶节点,graph,neo4j,cypher,graph-databases,Graph,Neo4j,Cypher,Graph Databases,我是Neo4j的新手,正在尝试找出一种方法来获取节点的所有子节点。这是我的图形模型: 如您所见,根节点是一个SecurityGroup节点,其下可能有SecurityGroup节点或User节点。我需要找到根SecurityGroup节点的所有子节点(包括用户和安全组),直到不再嵌套。下面是一个示例,说明如何获取所有子节点(根据图形模型))属性值为123的SecurityGroup节点的 MATCH (sg:SecurityGroup)<-[*]-(d) WHERE sg.id = 12

我是Neo4j的新手,正在尝试找出一种方法来获取节点的所有子节点。这是我的图形模型:


如您所见,根节点是一个SecurityGroup节点,其下可能有SecurityGroup节点或User节点。我需要找到根SecurityGroup节点的所有子节点(包括用户和安全组),直到不再嵌套。

下面是一个示例,说明如何获取所有子节点(根据图形模型))属性值为
123
SecurityGroup
节点的

MATCH (sg:SecurityGroup)<-[*]-(d)
WHERE sg.id = 123
RETURN d;
匹配(sg:SecurityGroup)
我需要找到的所有子节点(包括用户和安全组)
根SecurityGroup节点,直到不再嵌套

如果只希望根节点中的子节点,则需要在查询中指定此条件,为根节点提供类似ID的属性或特定标签(例如:RootNode、:ROOT等)

使用neo4j生成的ID属性不是一个好主意,因为它是

在根节点中使用
:Root
标签,可以执行以下操作:

MATCH (:Root)<-[:BELONGS_TO*]-(c)
RETURN c

MATCH(:Root)谢谢!成功了!但是,运行此查询时,某些安全组仍显示为断开连接。双击安全组节点后,它们将连接回图中的其他节点。不过,不会添加新节点,只加载新边。您能解释一下原因吗?您的数据模型图像显示了指向“根”节点方向的所有关系,因此我的查询也需要相同的方向性。这可能解释了为什么一些“已连接”的节点不会返回。如果你想忽略方向性,你可以省略
,谢谢你的回复!我计划在图中添加更多的节点类型,因此在我的图中会有多种类型的关系。在这种情况下可以使用多个关系名称吗?您好!是的,您可以匹配,例如:
match(:Root)Hi@ironMan. 如果任何一个答案都解决了你的问题,请通过点击复选标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。