Wednesday, July 9, 2014
Wednesday, August 14, 2013
Follow the steps below to find and delete duplicate nodes on property and index in Neo4j's web admin console.
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
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.|
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.
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.