Neo4j 4.0 now allows for sharding – a result of careful engineering (and at least one PhD in parallel computing) – which distributes and parallelizes queries and aggregations over multiple databases. Neo4j Fabric is Neo4j’s solution to graph sharding by allowing users to break a larger graph down into individual, smaller graphs and store them in separate databases. For graphs that are highly-connected, this means some level of data redundancy to maintain the relationships between entities. Sharding is possible because of new capabilities like federated queries. Queries against disjointed graphs Neo4j not only handles queries against large, sharded graphs that share the same data model; it also supports queries across disjointed graphs. In effect, this makes all the data in an enterprise’s graph databases searchable with a single query. As of Nov. 18, 2021, the current version of Neo4j is 4.3.7 in stratus 110: match r=(Person{name:'Zoe'})-[:PARENT]->(Person) return r - match (n:Person{name:'Andres'}) set n.age=24 return n - match (a:Person{name:'Andres'}),(b:Person{name:'John'}) create p=(a)[:FRIEND]->(b) return p - match (a:Person{name:'Andres'})-[:WORKS_AT]->(n) SET n.name='Neo4j Corp.',n:Company RETURN n; “DETACH DELETE” does it too! To clear the whole database: match (n) detach delete n; - match (reeves: Person {name:"Keanu Reeves"}) return reeves; - match p=(reeves: Person {name:"Keanu Reeves"})-[r:ACTED_IN]->(m) return p; - Co-actors of Reeves: match (reeves: Person {name:"Keanu Reeves"})[:ACTED_IN]->(m:Movie),(p) WHERE (m)<-[:ACTED_IN]-(p) return p; - Directors: match (hanks: Person {name:"Tom Hanks"})-[:ACTED_IN]>(m:Movie),(dir:Person) WHERE (m)<-[:DIRECTED]-(dir) return dir; - Oldest: match (p:Person) with min(p.born) as age match (p2:Person) where p2.born=age return p2; - Oldest correct: match (p:Person)-[r:DIRECTED]->(m:Movie) with min(p.born) as age match (p2:Person) where p2.born=age return p2; - Distinct names: match (p:Person) return distinct split(p.name,' ')[0];