Follow the steps below to find and delete duplicate nodes on property and index in Neo4j's web admin console.
Step 1
Select duplicate records by executing the following Cypher query in the Neo4j admin console.
START n=node:invoices("PO_NUMBER:(\"112233\")") // Cypher query for collecting the ids of indexed nodes containing duplicate properties WITH n ORDER BY id(n) DESC // Order by descending to delete the most recent duplicated record WITH n.Key? as DuplicateKey, COUNT(n) as ColCount, COLLECT(id(n)) as ColNode WITH DuplicateKey, ColCount, ColNode, HEAD(ColNode) as DuplicateId WHERE ColCount > 1 AND (DuplicateKey is not null) AND (DuplicateId is not null) WITH DuplicateKey, ColCount, ColNode, DuplicateId ORDER BY DuplicateId RETURN DuplicateKey, ColCount, DuplicateId //RETURN COLLECT(DuplicateId) as CommaSeparatedListOfIds //** Toggle comments for the return statements above to validate duplicate records //** Do not proceed to delete without validating
Step 2
Validate and copy duplicate record IDs from web admin console:
Execute the Cypher query from Step 1 to validate duplicate records exist. |
After validating duplicate records, execute the Cypher query from Step 1 as a comma separated list of IDs. |
Step 3
Copy and paste CommaSeparatedListOfIds into the delete query below.
START n=node(1120038,1120039,1120040,1120042,1120044,1120048,1120049,1120050,1120053,1120067,1120068) // Replace above with the IDs from CommaSeparatedListOfIds in the previous step MATCH n-[r]-() DELETE r, n
** Execute the Cypher query above ONLY after replacing the example IDs in the START statement.
Step 4
Validate that the delete transaction committed.
Execute the Cypher query from Step 1 to make sure that the transaction was committed. |
That's it! Comment below with questions or feedback.
No comments :
Post a Comment
Be curious, I dare you.