Cypher: Get info from deleted relationships

2019-05-25 17:49发布

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!

标签: neo4j cypher
1条回答
Root(大扎)
2楼-- · 2019-05-25 18:10

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]->()
...
查看更多
登录 后发表回答