Getting started with Neo4j
|
This section documents the current Neo4j This content was generated with the assistance of AI and should be verified against the official documentation before being relied on in production, as Neo4j iterates quickly. This section’s bibliography lists the reference material consulted while preparing these pages. |
Neo4j is a native graph database: data is stored as nodes and relationships rather than rows in tables, and a relationship is a first-class, traversable pointer rather than a foreign key resolved by a join. This page covers the editions and ways to run a server, the two shells used to talk to it, and a first round trip of data through Cypher.
Editions and deployment options
Neo4j ships as two editions:
-
Community Edition — free and open-source, single-instance only. Enough to learn Cypher, prototype, and run smaller production workloads.
-
Enterprise Edition — adds clustering for high availability and read scale-out, role-based access control, and composite databases (a single logical database that federates queries across several physical databases or graphs — the modern replacement for the older "Fabric" name). A clustered deployment assigns each member the primary or secondary server role rather than the legacy
CORE/READ_REPLICAterms.
You can run either edition several ways:
-
Neo4j Desktop — a local GUI application that manages one or more local database instances and opens Neo4j Browser against them. Good for a first exploration on a laptop.
-
Docker — the official image, for a disposable local server or as the base of a containerized deployment.
-
Self-managed — native packages (Debian/RPM, a Windows installer, or a plain archive) run directly on a server or VM you operate yourself.
-
Aura — Neo4j’s fully managed cloud service. AuraDB is the managed graph database (Free, Professional, Business Critical, and Virtual Dedicated Cloud tiers); AuraDS is a managed Graph Data Science workspace built on the same infrastructure. Aura runs the same Cypher engine as a self-managed server and removes patching, backups, and cluster operations.
# Disposable local server via Docker: Bolt on 7687, Browser/HTTP on 7474.
# https://neo4j.com/docs/operations-manual/current/docker/
docker run -d --name neo4j \
-p 7474:7474 -p 7687:7687 \
-e NEO4J_AUTH=neo4j/change-me-please \
neo4j:2026.01
Neo4j moved from semantic versioning to calendar versioning (YYYY.MM) in 2025; the tag above pins a
specific monthly release rather than a major.minor.patch. See
Getting Started for the full installation matrix and
What is Neo4j for the broader product tour this page
assumes.
Aura: the managed cloud option
Aura removes the deployment step entirely: you create an instance through the web console or its API and get back a Bolt connection URI, with no server to patch or cluster to operate.
An AuraDB instance and a local Docker container are driven identically from here on: the same Bolt protocol, the same Cypher, and the same two shells described next.
Neo4j Browser and cypher-shell
Two clients ship with every Neo4j deployment (Aura included) and connect over the Bolt protocol, by default
on port 7687:
-
Neo4j Browser — a web UI (served on port
7474for a local/Docker install; embedded in the console for Aura) for running Cypher, visualizing the returned graph, and browsing schema. Reference: Neo4j Browser manual. -
cypher-shell — a command-line REPL bundled with the server, for scripting and CI. Reference: cypher-shell.
$ cypher-shell -a neo4j://localhost:7687 -u neo4j -p change-me-please
Connected to Neo4j using Bolt protocol version 5.x at neo4j://localhost:7687
neo4j@neo4j> RETURN "hello" AS greeting;
+-----------+
| greeting |
+-----------+
| "hello" |
+-----------+
neo4j@neo4j> :exit
\:exit (in cypher-shell) and the equivalent Browser command bar both accept the same Cypher, so anything
run in one works unchanged in the other — including the round trip below.
A first round trip in Cypher
A minimal write-then-read cycle: create two \:Person nodes, a \:Movie node, and an ACTED_IN
relationship between one person and the movie, then read them back.
// Write: two people, a movie, and one relationship carrying its own property.
CREATE (keanu:Person {name: "Keanu Reeves", born: 1964})
CREATE (carrie:Person {name: "Carrie-Anne Moss", born: 1967})
CREATE (matrix:Movie {title: "The Matrix", released: 1999})
CREATE (keanu)-[:ACTED_IN {roles: ["Neo"]}]->(matrix)
CREATE (carrie)-[:ACTED_IN {roles: ["Trinity"]}]->(matrix);
// Read: everyone who acted in a given movie, and which role.
MATCH (p:Person)-[r:ACTED_IN]->(m:Movie {title: "The Matrix"})
RETURN p.name AS actor, r.roles AS roles;
That single query already touches the three things every later page builds on: labelled nodes, typed and
directed relationships, and property maps on both. The property-graph vocabulary behind \:Person,
ACTED_IN, and \{name: "Keanu Reeves"\} is covered in
The property graph model, and the MATCH/CREATE/RETURN clauses used here are
covered in full in Cypher fundamentals.
Where to go next
-
The property graph model — nodes, relationships, labels, and properties in depth.
-
Cypher fundamentals — the query language used above, from
MATCHpatterns to parameters. -
What MongoDB is & how to run it and What Couchbase Server is & how to run it — the same "what it is / how to run it" walkthrough for two document databases, for contrast with the graph model.
-
Choosing the Right Database — how a graph database like Neo4j compares to relational, document, and search engines when picking one for a given workload.