Neo4j删除节点并返回已删除的节点

Neo4j删除节点并返回已删除的节点,neo4j,cypher,Neo4j,Cypher,圣诞节,各位 我有一个简单的问题。我想删除Neo4j中具有/不具有关系的节点,并返回已删除的节点和/或其特定属性。以下几行中的某些内容(以下内容不起作用) 我可以在两个不同的请求中执行上述任务,查询要删除的节点,然后删除它,但我想知道是否可以在单个语句中执行 我想知道是否有办法将节点存储在另一个位置,然后删除节点并返回占位符。我是Neo4j新手,需要建议 我遇到过这个很旧的版本,我无法让它与我的Neo4j版本一起工作。我使用Neo4j 2.3.1可能有一种更简单的方法来完成您想要的 与其复制节点

圣诞节,各位

我有一个简单的问题。我想删除Neo4j中具有/不具有关系的节点,并返回已删除的节点和/或其特定属性。以下几行中的某些内容(以下内容不起作用)

我可以在两个不同的请求中执行上述任务,查询要删除的节点,然后删除它,但我想知道是否可以在单个语句中执行

我想知道是否有办法将节点存储在另一个位置,然后删除节点并返回占位符。我是Neo4j新手,需要建议


我遇到过这个很旧的版本,我无法让它与我的Neo4j版本一起工作。我使用Neo4j 2.3.1

可能有一种更简单的方法来完成您想要的

与其复制节点,不如让它保持不变,更改其标签(这样它就不会干扰模型的其余部分),然后返回该节点

大概是这样的:

MATCH (j:JOB { job_id = '1' })
OPTIONAL MATCH (j)-[r]-(n)
REMOVE j:JOB
DELETE r
SET j:RecycleBin_JOB
RETURN j;

复制节点以存储它似乎是浪费时间,因为您已经有了一个节点。只需返回该数据,并调整标签和关系,使其不会干扰模型的其余部分。

您可以使用
with
子句来别名要返回的数据(属性),并在同一查询中删除节点:

//WITH j, needed to add j after WITH for cypher to work.

MATCH(j:Job) where j.job_id = "1" 
WITH j, j.industry AS industry, j.name AS name
DELETE j
RETURN industry, name

如果需要删除节点的所有属性,请参阅。

。这可能对你有帮助

Match (n:Product)
WITH n, properties(n) AS m
DETACH DELETE n
RETURN m

我遇到了一个类似的问题,上面的代码对我很有用,祝你好运。

谢谢William,这正是我要找的,尽管我不得不用关键字将查询改为添加j。对于1或2个属性,这是可以的,但是如果我想获得所有属性呢?这肯定是一种方法,但是,我删除的节点有关系,您的解决方案在那里不可行(除非我删除关系),在这种情况下,我需要两个查询。
Match (n:Product)
WITH n, properties(n) AS m
DETACH DELETE n
RETURN m