Cypher: Get info from deleted relationships

2019-05-25 18:12发布

问题:

MATCH (n:Topic { mongoId: {_id} })-[r]-() DELETE n,r RETURN r;

That returns the error 'Error: Relationship 1509 has been deleted'.

However, I need r.mongoId to delete entries in another database.

How do I do this with Neo4j 2.2.3?

I'm doing this through the Seraph library. Is there a way to collect a property, delete the relationships, and return the collection?

I just need this data: MATCH (n:Topic { mongoId: _id })-[r]-() RETURN COLLECT(r.mongoId);

Thanks!

回答1:

You can use a WITH clause to alias the data you want to return before deleting the node and relationship. Something like this:

MATCH (n:Topic {mongoId: {_id} })-[r]-() 
WITH r.mongoId as docId, n,r 
DELETE n,r 
RETURN docId

Or you could break it up into two queries, one to retrieve the property you want, then the second to delete the relationship and node.

EDIT: you most likely want to specify a directed relationship to avoid duplicate docId properties returned:

MATCH (n:Topic {mongoId: {_id} })-[r]->()
...


标签: neo4j cypher