我是Neo4j的新手并试图找到一种方法来获取节点的所有子节点。这是我的图表模型: Graph Model
如您所见,根节点是 SecurityGroup 节点,其下可能包含 SecurityGroup 节点或其下的用户节点。我需要找到根 SecurityGroup 节点的所有子节点(User和SecurityGroups),直到不再有嵌套为止。
答案 0 :(得分:1)
以下是如何获取SecurityGroup
属性值id
的{{1}}节点的所有后代节点(根据图模型))的示例。
123
您可能希望在MATCH (sg:SecurityGroup)<-[*]-(d)
WHERE sg.id = 123
RETURN d;
上创建索引(或唯一性约束)以有效地启动查询(而不是扫描所有:SecurityGroup(id)
个节点)。
答案 1 :(得分:0)
我需要找到所有子节点(User和SecurityGroups) 根安全组节点,直到没有嵌套为止。
如果您想要仅来自ROOT节点的子节点,您需要在查询中指定此条件,为根节点提供类似ID的属性或特定标签(例如:RootNode,: Root等。)。
使用neo4j生成的ID属性不是一个好主意,因为它can change。
在根节点中使用:Root
标签,您可以执行以下操作:
MATCH (:Root)<-[:BELONGS_TO*]-(c)
RETURN c
最好通过语义问题在“[”和“]”中指定关系名称并提高性能。
可选择:您可以安装和使用GraphAware Neo4j UUID的根标签和ID属性,为您图表中的每个节点创建和管理通用唯一标识符。