I have now stabilised the contentful-to-neo4j project. It should be able to handle most contentful spaces. I still need to tune the transactions for very large datasets – but have no errors yet.
It has gone from being a simple script to an application that has 100% code coverage. I have learnt a lot about javascript Promises and how to test in Jest.
Here are some useful neo4j queries:
Find out how many of each content type that you have published:
MATCH (n) WHERE n.contenttype IS NOT NULL
RETURN n.contenttype, COUNT(n)
ORDER BY n.contenttype
You need to remember that nodes are circular and need to be surrounded by ()
Find pages that share slugs:
MATCH (a {slug:’common-url’}) RETURN a
Find nodes that have a slug with a specific ending:
MATCH (n) WHERE n.slug ENDS WITH ‘-kr’ RETURN DISTINCT n
Find assets that are not referenced by a content type:
MATCH (image {cmstype: ‘Asset’})
WHERE NOT (image)-[]-()
RETURN image
Simple search for orphans:
MATCH (a) WHERE NOT (a)-[]-() RETURN a
These are simple queries in Neo4j that would be hard to do in the Contentful UI.