Neo4j Cypher检查节点是否是子节点

时间:2015-08-03 20:37:05

标签: neo4j cypher spring-data-neo4j

我有以下课程:

@NodeEntity
public class Product {

    private final static String CONTAINS = "CONTAINS";

    @GraphId
    private Long id;

    @RelatedTo(type = CONTAINS, direction = Direction.INCOMING)
    private Set<Product> parentProducts = new HashSet<>();

}

我正在尝试实施一种方法:

public boolean isProductAncestor(Product productId, Product childProductId) {
    //some Cypher query
}

将检查productId是否为childProductId的祖先(根目录的任何深度)。

我需要一个Cypher查询。

1 个答案:

答案 0 :(得分:1)

此查询查找它们之间的路径:

MATCH path=(p:Product)-[:CONTAINS*]->(m:Product)
WHERE id(p) = {idp} AND id(m) = {idm}
RETURN path LIMIT 1;

如果您得到结果,则表示mp的祖先。如果什么都没有,那么它们之间没有任何关系。