我想从路径中删除一个节点,而不会危及原始路径节点.
这是我的测试数据库:
我想从路径中删除node(2),但我希望节点1,3,4和5在路径中保持链接.
有没有办法在一个查询中执行此操作?到目前为止,我有以下内容:
MATCH p = (:Connect)-[:to*]-(:Connect)
WITH nodes(p) AS connectNodes
UNWIND connectNodes AS connectNode
WITH distinct connectNode
WHERE connectNode.connectID = 2
DETACH DELETE (connectNode)
Run Code Online (Sandbox Code Playgroud)
这将删除节点2并取消链接路径
如何在没有节点2的情况下维护原始路径的节点之间的链接?
编辑:
我通过修改接受的答案的答案来解决它
//Make sure node (n) belongs to the path
MATCH (n:Connect {cID:2})-[:to*]-(:Connect {cID:5})
//get attached nodes, if any, ignoring directions
OPTIONAL MATCH (oa:connect)-[:to]-(n)-[:to]-(ob:connect)
//make sure nothing is duplicated
WHERE oa.cID <> ob.cID
//Use FOREACH to mimic if/else. Only merge oa to ob if they exist. Query fails without it
FOREACH …Run Code Online (Sandbox Code Playgroud)