让我们考虑一下
在Cypher查询下面,以获取其带有每个节点标记的部分
MATCH p=(n:Category)-[:SUB_CATEGORY*]->(m)<-[:TAGGED_TO]-(part:Part)
WHERE NOT ()-[:SUB_CATEGORY]->(n) AND toLower(part.name) STARTS WITH toLower('atm')
WITH COLLECT(p) AS ps
RETURN ps
上述密码查询返回实际结果集,即它显示SUB_CATEGORY和TAGGED_TO的所有关系
现在,如果我曾经使用APOC程序将其转换为Tree结构,那么它将跳过父节点的TAGGED_TO关系节点,即Drone
MATCH p=(n:Category)-[:SUB_CATEGORY*]->(m)<-[:TAGGED_TO]-(part:Part)
WHERE NOT ()-[:SUB_CATEGORY]->(n) AND toLower(part.name) STARTS WITH toLower('atm')
WITH COLLECT(p) AS ps
CALL apoc.convert.toTree(ps) YIELD value
RETURN value
能给我建议使用APOC来获取所有节点的TAGGED_TO节点以及父节点
答案 0 :(得分:0)
在第一个查询中,由于启用了浏览器选项TAGGED_TO
,因此显示了父节点Drone
和:Part
节点之间的Connect result nodes
关系:
如果选中此选项,则在检索密码查询结果后,第二秒钟 执行查询以获取结果节点之间的关系。
但是实际上结果中没有这种关系,因为匹配模式未考虑a path with a long zero的可能性。试试这个:
MATCH p=(n:Category)-[:SUB_CATEGORY*0..]->(m:Category)<-[:TAGGED_TO]-(part:Part)
WHERE NOT ()-[:SUB_CATEGORY]->(n) AND toLower(part.name) STARTS WITH toLower('atm')
WITH COLLECT(p) AS ps
CALL apoc.convert.toTree(ps) YIELD value
RETURN value