Neo4j Cypher 检查节点是否是子节点的祖先
Neo4j Cypher check if node is ancestor of child node
我有一个关注class:
@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 查询。
此查询查找它们之间的路径:
MATCH path=(p:Product)-[:CONTAINS*]->(m:Product)
WHERE id(p) = {idp} AND id(m) = {idm}
RETURN path LIMIT 1;
如果你得到一个结果,那就意味着 m
是 p
的祖先。如果你什么都得不到,那么它们之间就没有关系。
我有一个关注class:
@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 查询。
此查询查找它们之间的路径:
MATCH path=(p:Product)-[:CONTAINS*]->(m:Product)
WHERE id(p) = {idp} AND id(m) = {idm}
RETURN path LIMIT 1;
如果你得到一个结果,那就意味着 m
是 p
的祖先。如果你什么都得不到,那么它们之间就没有关系。