我有一个树形结构,比如 node(8) 有两个子 node(13) 和 node(14)。当我通过 cyhper 删除 node(8) 时,如何删除所有子项。
我这样写密码:“START r=node(8) MATCH r-[:children*0..]-> d With d Match d-[x]-() Delete d,x”
它应该可以工作,但实际上它只会删除 node(8) 并得到一些错误。我发现实际上它正在尝试删除这样的集合。
- ---d-------r
- 节点(8)---------Rel(16)
- 节点(8)---------Rel(17)
- 节点(9)---------Rel(16)
- 节点(10)---------Rel(17)
在 cyhper 删除第一个 Node(8) 之后,它尝试第二次删除 Node(8) 并得到错误,因为它不再存在。
当我这样写密码时,这是有线原因:“START r=node(8) MATCH r-[:children*0..]-> d Return d” 它返回:
- ---d---
- 节点(8)
- 节点(8)
- 节点(9)
- 节点(10)
这是正确的。但正如我们所知,我不能删除它们与它们的关系,所以我需要用“WITH”写一个密码:
"START r=node(8) MATCH r-[:children*0..]-> d 与 d 匹配 d-[x]-() 返回 d,x"
它再次得到错误的结果。
- ---d-------r
- 节点(8)---------Rel(16)
- 节点(8)---------Rel(17)
- 节点(9)---------Rel(16)
- 节点(10)---------Rel(17)
谁能帮我?真的很郁闷。我真的很喜欢 neo4j,但我发现“删除”部分太难了。为什么不直接使用“强制删除”并让 Neo4j 自动删除关系,就像这样:
“START r=node(8) MATCH r-[:children*0..]-> d FORCE DELETE d”
顺便说一句,为什么不能在“删除”部分使用 distinct ?