我在Neo4J DB上有这种类型的图形:
(Child)-[has_parent]->(Parent)-[has_parent]->(Parent)-[has_parent]->(Parent)
我有一个使用 spring 数据连接到 Neo4J 的 Java 应用程序,我正在尝试获取一个查询以返回具有完整父层次结构的子节点。
我有@NodeEntity子类和家长类,它们使用@RelationshipEntity类相关联。
使用查询:
@Query("MATCH(c:Child-[r:has_parent]->(p:Parent) return c,r,p")
仅将孩子与第一个父母一起返回。我尝试使用带有值>2 @Depth注释,但它不起作用。
在这种情况下,我需要什么查询才能获得完整的层次结构?
解决问题的最简单方法可能是返回路径对象。我们可以使用可变长度路径查询将一跳之外的节点以及两跳之外的节点组合在一起。
MATCH p=(c:Child-[r:has_parent*1..2]->(p:Parent)
RETURN p
如果你有一个更大的分层图,那么你可能想要使用一个更大的路径限制,比如
MATCH p=(c:Child-[r:has_parent*1..15]->(p:Parent)
RETURN p