如何解决为什么这些 Cypher 查询不做同样的事情?
我正在匹配完整路径,删除最后一个节点,然后返回节点以删除任何没有向下关系的节点。
这个查询做我想要的:
.squiggle img{}
但是这个查询只删除了WITH语句中的第一个节点,MATCH (t:type)-[:HAS]->(m:model)-[:HAS]-(r:region)-[:HAS]-(p:param)-[:HAS]-(i:init { value: 1613044800})-[init_has:HAS]-(u:{url: 'http://something2.png'})
DELETE init_has,u
WITH i,p,r,m,t
MATCH (i) WHERE NOT (i)-[:HAS]->()
DETACH DELETE i
WITH p,t
MATCH (p) WHERE NOT (p)-[:HAS]->()
DETACH DELETE p
WITH r,t
MATCH (r) WHERE NOT (r)-[:HAS]->()
DETACH DELETE r
WITH m,t
MATCH (m) WHERE NOT (m)-[:HAS]->()
DETACH DELETE m
WITH t
MATCH (t) WHERE NOT (t)-[:HAS]->()
DETACH DELETE t
:
i
它离开节点MATCH (t:type)-[:HAS]->(m:model)-[:HAS]-(r:region)-[:HAS]-(p:param)-[:HAS]-(i:init { value: 1613044800})-[init_has:HAS]-(u:{url: 'http://something2.png'})
DELETE init_has,u
WITH [i,t] AS parents
UNWIND parents AS parent
WITH parent
MATCH (parent) WHERE NOT (parent)-[:HAS]->()
DETACH DELETE parent
,它没有任何向下的关系。为什么这些查询不同?我可以以某种方式修改第二个查询以正确遍历这些节点并在它们没有向下关系时删除它们吗?
解决方法
我不确定似乎是什么问题。我可以给你提示如何改进你的查询。当您想对后面的步骤进行过滤时,您不必使用另一个 MATCH 语句。在你的情况下:
MATCH (t:type)-[:HAS]->(m:model)-[:HAS]-(r:region)-[:HAS]-(p:param)-[:HAS]-(i:init { value: 1613044800})-[init_has:HAS]-(u:{url: 'http://something2.png'})
DELETE init_has,u
WITH [i,p,r,m,t] AS parents
UNWIND parents AS parent
WITH parent
WHERE NOT (parent)-[:HAS]->()
DETACH DELETE parent
我不确定这是否能解决您的问题。查询看起来不错,因此如果没有示例,很难说有什么问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。