Neo4j找到一个节点的所有孩子

时间:2017-06-30 23:21:56

标签: neo4j cypher

我的图表模型如下所示: Graph Model

给定一个根节点,我试图找到该根节点的所有子节点。我的查询类似于:

MATCH(a:X{somefilter})<-[*]-(allchildren) RETURN a,allchildren;

allchildren此处对应Y & Z。 但在这里我错过了Nodes&amp; amp;从Z出来的关系。像Z-(:CHILD)->Z我也需要捕获这些节点。

如何捕获所有子节点?

1 个答案:

答案 0 :(得分:1)

听起来你不仅仅关注孩子,还关注孩子们的孩子。

这将从根节点向下返回两个级别的所有路径(包含节点和关系的对象)。因此,在你的图片中,它将停止遍历Y和Z的子女。将关系类型限定为MEMBER和CHILD将确保路径仅包括这些类型的关系。

MATCH p=(a:X {somefilter})-[:MEMBER|CHILD*0..2]-(allchildren) 
RETURN p

在你的照片中,虽然Z Y实际上是一个Z的孩子。它似乎没有任何其他孩子。

如果从没有方向的根节点 X 进行查询,则可以捕获从public static Icon BlankIcon(int size) { BufferedImage image = new BufferedImage(size, size, BufferedImage.TYPE_INT_ARGB); return new ImageIcon(image); } 出站的关系和节点,并且只反对那些入站的节点。