Neo4j/Cypher-如何检索包含和不包含子类别的类别

Neo4j/Cypher-如何检索包含和不包含子类别的类别,neo4j,cypher,Neo4j,Cypher,使用该示例,以下查询将返回所有类别及其子类别: MATCH p=(n:Category)-[:subcategory*]->(m) WHERE NOT ()-[:subcategory]->(n) WITH COLLECT(p) AS ps CALL apoc.convert.toTree(ps) yield value RETURN value; 如何将查询修改为也获取没有子类别的类别?只需稍作调整即可: MATCH p=(n:Category)-[:subcategory*0.

使用该示例,以下查询将返回所有类别及其子类别:

MATCH p=(n:Category)-[:subcategory*]->(m)
WHERE NOT ()-[:subcategory]->(n)
WITH COLLECT(p) AS ps
CALL apoc.convert.toTree(ps) yield value
RETURN value;

如何将查询修改为获取没有子类别的类别?

只需稍作调整即可:

MATCH p=(n:Category)-[:subcategory*0..]->(m)
WHERE NOT ()-[:subcategory]->(n)
WITH COLLECT(p) AS ps
CALL apoc.convert.toTree(ps) YIELD value
RETURN value;
*0..
模式包括0长度路径(即没有子类别的路径)