<!-- CANARY: REQ=REQ-DOCS-001; FEATURE="Docs"; ASPECT=Documentation; STATUS=TESTED; OWNER=docs; UPDATED=2026-01-15 -->
<h2 id="tutorials" class="position-relative d-flex align-items-center group">
<span>Tutorials</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="tutorials"
aria-haspopup="dialog"
aria-label="Share link: Tutorials">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h2><div id="headingShareModal" class="heading-share-modal" role="dialog" aria-modal="true" aria-labelledby="headingShareTitle" hidden>
<div class="hsm-dialog" role="document">
<div class="hsm-header">
<h2 id="headingShareTitle" class="h6 mb-0 fw-bold">Share this section</h2>
<button type="button" class="hsm-close" aria-label="Close">
<i class="fa-solid fa-xmark"></i>
</button>
</div>
<div class="hsm-body">
<label for="headingShareInput" class="form-label small text-muted mb-1 text-uppercase fw-bold" style="font-size: 0.7rem; letter-spacing: 0.5px;">Permalink</label>
<div class="input-group mb-4 hsm-url-group">
<input id="headingShareInput" type="text" class="form-control font-monospace" readonly aria-readonly="true" style="font-size: 0.85rem;" />
<button class="btn btn-primary hsm-copy" type="button" aria-label="Copy" title="Copy">
<i class="fa-duotone fa-clipboard" aria-hidden="true"></i>
</button>
</div>
<div class="small fw-bold mb-2 text-muted text-uppercase" style="font-size: 0.7rem; letter-spacing: 0.5px;">Share via</div>
<div class="hsm-share-grid">
<a id="share-twitter" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer">
<i class="fa-brands fa-twitter me-2"></i>Twitter
</a>
<a id="share-linkedin" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer">
<i class="fa-brands fa-linkedin me-2"></i>LinkedIn
</a>
<a id="share-facebook" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer">
<i class="fa-brands fa-facebook me-2"></i>Facebook
</a>
</div>
</div>
</div>
</div>
<style>
.heading-share-modal {
position: fixed;
inset: 0;
display: flex;
justify-content: center;
align-items: center;
background: rgba(0, 0, 0, 0.6);
z-index: 1050;
padding: 1rem;
backdrop-filter: blur(4px);
-webkit-backdrop-filter: blur(4px);
}
.heading-share-modal[hidden] { display: none !important; }
.hsm-dialog {
max-width: 420px;
width: 100%;
background: var(--bs-body-bg, #fff);
color: var(--bs-body-color, #212529);
border: 1px solid var(--bs-border-color, rgba(0,0,0,0.1));
border-radius: 1rem;
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
overflow: hidden;
animation: hsm-fade-in 0.2s ease-out;
}
@keyframes hsm-fade-in {
from { opacity: 0; transform: scale(0.95); }
to { opacity: 1; transform: scale(1); }
}
[data-bs-theme="dark"] .hsm-dialog {
background: #1e293b;
border-color: rgba(255,255,255,0.1);
color: #f8f9fa;
}
.hsm-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem 1.5rem;
border-bottom: 1px solid var(--bs-border-color, rgba(0,0,0,0.1));
background: rgba(0,0,0,0.02);
}
[data-bs-theme="dark"] .hsm-header {
background: rgba(255,255,255,0.02);
border-color: rgba(255,255,255,0.1);
}
.hsm-close {
background: transparent;
border: none;
color: inherit;
opacity: 0.5;
padding: 0.25rem 0.5rem;
border-radius: 0.25rem;
font-size: 1.2rem;
line-height: 1;
transition: opacity 0.2s;
}
.hsm-close:hover {
opacity: 1;
}
.hsm-body {
padding: 1.5rem;
}
.hsm-url-group {
display: flex !important;
align-items: stretch;
}
.hsm-url-group .form-control {
flex: 1;
min-width: 0;
margin: 0;
background: var(--bs-secondary-bg, #f8f9fa);
border-color: var(--bs-border-color, #dee2e6);
border-top-right-radius: 0;
border-bottom-right-radius: 0;
height: 42px;
}
.hsm-url-group .btn {
flex: 0 0 auto;
margin: 0;
margin-left: -1px;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
height: 42px;
display: flex;
align-items: center;
justify-content: center;
padding: 0 1.25rem;
z-index: 2;
}
[data-bs-theme="dark"] .hsm-url-group .form-control {
background: #0f172a;
border-color: #334155;
color: #e2e8f0;
}
.hsm-share-grid {
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.hsm-share-grid .btn {
display: flex;
align-items: center;
justify-content: center;
font-size: 0.9rem;
padding: 0.6rem;
border-color: var(--bs-border-color);
width: 100%;
}
[data-bs-theme="dark"] .hsm-share-grid .btn {
color: #e2e8f0;
border-color: #475569;
}
[data-bs-theme="dark"] .hsm-share-grid .btn:hover {
background: #334155;
border-color: #cbd5e1;
}
</style>
<script>
(function(){
const modal = document.getElementById('headingShareModal');
if(!modal) return;
const input = modal.querySelector('#headingShareInput');
const copyBtn = modal.querySelector('.hsm-copy');
const twitter = modal.querySelector('#share-twitter');
const linkedin = modal.querySelector('#share-linkedin');
const facebook = modal.querySelector('#share-facebook');
const closeBtn = modal.querySelector('.hsm-close');
let lastFocus=null;
let trapBound=false;
function buildUrl(id){ return window.location.origin + window.location.pathname + '#' + id; }
function isOpen(){ return !modal.hasAttribute('hidden'); }
function hydrate(id){
const url=buildUrl(id);
input.value=url;
const enc=encodeURIComponent(url);
const text=encodeURIComponent(document.title);
if(twitter) twitter.href=`https://twitter.com/intent/tweet?url=${enc}&text=${text}`;
if(linkedin) linkedin.href=`https://www.linkedin.com/sharing/share-offsite/?url=${enc}`;
if(facebook) facebook.href=`https://www.facebook.com/sharer/sharer.php?u=${enc}`;
}
function openModal(id){
lastFocus=document.activeElement;
hydrate(id);
if(!isOpen()){
modal.removeAttribute('hidden');
}
requestAnimationFrame(()=>{ input.focus(); });
trapFocus();
}
function closeModal(){
if(!isOpen()) return;
modal.setAttribute('hidden','');
if(lastFocus && typeof lastFocus.focus==='function') lastFocus.focus();
}
function copyCurrent(){
try{ navigator.clipboard.writeText(input.value).then(()=>feedback(true),()=>fallback()); }
catch(e){ fallback(); }
}
function fallback(){ input.select(); try{ document.execCommand('copy'); feedback(true);}catch(e){ feedback(false);} }
function feedback(ok){ if(!copyBtn) return; const icon=copyBtn.querySelector('i'); if(!icon) return; const prev=copyBtn.getAttribute('data-prev')||icon.className; if(!copyBtn.getAttribute('data-prev')) copyBtn.setAttribute('data-prev',prev); icon.className= ok ? 'fa-duotone fa-clipboard-check':'fa-duotone fa-circle-exclamation'; setTimeout(()=>{ icon.className=prev; },1800); }
function handleShareClick(e){ e.preventDefault(); const btn=e.currentTarget; const id=btn.getAttribute('data-share-target'); if(id) openModal(id); }
function bindShareButtons(){
document.querySelectorAll('.h-share').forEach(btn=>{
if(!btn.dataset.hShareBound){ btn.addEventListener('click', handleShareClick); btn.dataset.hShareBound='1'; }
});
}
bindShareButtons();
if(document.readyState==='loading'){
document.addEventListener('DOMContentLoaded', bindShareButtons);
} else {
requestAnimationFrame(bindShareButtons);
}
document.addEventListener('click', function(e){
const shareBtn=e.target.closest && e.target.closest('.h-share');
if(shareBtn && !shareBtn.dataset.hShareBound){ handleShareClick.call(shareBtn, e); }
}, true);
document.addEventListener('click', e=>{
if(e.target===modal) closeModal();
if(e.target.closest && e.target.closest('.hsm-close')){ e.preventDefault(); closeModal(); }
if(copyBtn && (e.target===copyBtn || (e.target.closest && e.target.closest('.hsm-copy')))) { e.preventDefault(); copyCurrent(); }
});
document.addEventListener('keydown', e=>{ if(e.key==='Escape' && isOpen()) closeModal(); });
function trapFocus(){
if(trapBound) return;
trapBound=true;
modal.addEventListener('keydown', f=>{ if(f.key==='Tab' && isOpen()){ const focusable=[...modal.querySelectorAll('a[href],button,input,textarea,select,[tabindex]:not([tabindex="-1"])')].filter(el=>!el.hasAttribute('disabled')); if(!focusable.length) return; const first=focusable[0]; const last=focusable[focusable.length-1]; if(f.shiftKey && document.activeElement===first){ f.preventDefault(); last.focus(); } else if(!f.shiftKey && document.activeElement===last){ f.preventDefault(); first.focus(); } } });
}
if(closeBtn) closeBtn.addEventListener('click', e=>{ e.preventDefault(); closeModal(); });
})();
</script><p>Learn Geode through hands-on, step-by-step tutorials covering everything from basic queries to advanced graph algorithms. Each tutorial builds practical skills with real-world examples.</p>
<h3 id="overview" class="position-relative d-flex align-items-center group">
<span>Overview</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="overview"
aria-haspopup="dialog"
aria-label="Share link: Overview">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><p>These tutorials are designed for learning by doing. Whether you’re new to graph databases or an experienced developer, these guides provide structured, progressive learning paths from basics to advanced topics.</p>
<p>Each tutorial includes complete working examples, expected outputs, and exercises to reinforce learning. Follow tutorials sequentially for a comprehensive learning path, or jump to specific topics as needed.</p>
<h3 id="learning-paths" class="position-relative d-flex align-items-center group">
<span>Learning Paths</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="learning-paths"
aria-haspopup="dialog"
aria-label="Share link: Learning Paths">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="beginner-path" class="position-relative d-flex align-items-center group">
<span>Beginner Path</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="beginner-path"
aria-haspopup="dialog"
aria-label="Share link: Beginner Path">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><ol>
<li><strong><a
href="/docs/tutorials/repl-basics/"
>REPL Basics</a>
</strong> - Get comfortable with the interactive shell</li>
<li><strong><a
href="/docs/tutorials/match-basics/"
>MATCH Basics</a>
</strong> - Learn fundamental graph queries</li>
<li><strong><a
href="/docs/tutorials/overview/"
>Tutorial Overview</a>
</strong> - Understand the tutorial structure</li>
</ol>
<h4 id="intermediate-path" class="position-relative d-flex align-items-center group">
<span>Intermediate Path</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="intermediate-path"
aria-haspopup="dialog"
aria-label="Share link: Intermediate Path">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><ol start="4">
<li><strong><a
href="/docs/tutorials/transaction-patterns-tutorial/"
>Transaction Patterns</a>
</strong> - Master ACID transactions</li>
<li><strong><a
href="/docs/tutorials/indexing-tutorial/"
>Indexing Tutorial</a>
</strong> - Optimize query performance</li>
<li><strong><a
href="/docs/tutorials/index-optimization/"
>Index Optimization</a>
</strong> - Advanced index strategies</li>
</ol>
<h4 id="advanced-path" class="position-relative d-flex align-items-center group">
<span>Advanced Path</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="advanced-path"
aria-haspopup="dialog"
aria-label="Share link: Advanced Path">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><ol start="7">
<li><strong><a
href="/docs/tutorials/vector-search-tutorial/"
>Vector Search</a>
</strong> - Implement similarity search</li>
<li><strong><a
href="/docs/tutorials/graph-algorithms-tutorial/"
>Graph Algorithms</a>
</strong> - Apply graph algorithms</li>
</ol>
<h3 id="topics-in-this-section" class="position-relative d-flex align-items-center group">
<span>Topics in This Section</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="topics-in-this-section"
aria-haspopup="dialog"
aria-label="Share link: Topics in This Section">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><ul>
<li><strong><a
href="/docs/tutorials/overview/"
>Tutorial Overview</a>
</strong> - Introduction to the tutorial series with learning objectives and prerequisites</li>
<li><strong><a
href="/docs/tutorials/repl-basics/"
>REPL Basics</a>
</strong> - Interactive shell fundamentals including commands, query execution, and meta commands</li>
<li><strong><a
href="/docs/tutorials/match-basics/"
>MATCH Basics</a>
</strong> - Core pattern matching concepts with node patterns, relationship patterns, and filtering</li>
<li><strong><a
href="/docs/tutorials/transaction-patterns-tutorial/"
>Transaction Patterns</a>
</strong> - ACID transactions with BEGIN/COMMIT/ROLLBACK, savepoints, and error handling</li>
<li><strong><a
href="/docs/tutorials/indexing-tutorial/"
>Indexing Tutorial</a>
</strong> - Index creation and usage covering all six index types</li>
<li><strong><a
href="/docs/tutorials/index-optimization/"
>Index Optimization</a>
</strong> - Advanced index optimization including EXPLAIN analysis and performance tuning</li>
<li><strong><a
href="/docs/tutorials/vector-search-tutorial/"
>Vector Search Tutorial</a>
</strong> - Similarity search with HNSW indexes, embeddings, and K-NN queries</li>
<li><strong><a
href="/docs/tutorials/graph-algorithms-tutorial/"
>Graph Algorithms Tutorial</a>
</strong> - Practical guide to PageRank, community detection, shortest paths, and centrality</li>
</ul>
<h3 id="tutorial-format" class="position-relative d-flex align-items-center group">
<span>Tutorial Format</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="tutorial-format"
aria-haspopup="dialog"
aria-label="Share link: Tutorial Format">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><p>Each tutorial follows a consistent structure:</p>
<h4 id="1-learning-objectives" class="position-relative d-flex align-items-center group">
<span>1. Learning Objectives</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="1-learning-objectives"
aria-haspopup="dialog"
aria-label="Share link: 1. Learning Objectives">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>What you’ll learn and prerequisites:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Objectives:
</span></span><span class="line"><span class="cl">- Understand pattern matching syntax
</span></span><span class="line"><span class="cl">- Write basic MATCH queries
</span></span><span class="line"><span class="cl">- Filter results with WHERE
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Prerequisites:
</span></span><span class="line"><span class="cl">- Geode installed and running
</span></span><span class="line"><span class="cl">- Basic SQL knowledge helpful but not required
</span></span></code></pre></div>
<h4 id="2-concepts" class="position-relative d-flex align-items-center group">
<span>2. Concepts</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="2-concepts"
aria-haspopup="dialog"
aria-label="Share link: 2. Concepts">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Core concepts explained with examples:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Node</span><span class="w"> </span><span class="py">pattern</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">(</span><span class="py">variable</span><span class="p">:</span><span class="nc">Label</span><span class="w"> </span><span class="p">{</span><span class="py">property</span><span class="p">:</span><span class="w"> </span><span class="nc">value</span><span class="p">})</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Explanation</span><span class="p">:</span><span class="w"> </span><span class="nc">Matches</span><span class="w"> </span><span class="py">nodes</span><span class="w"> </span><span class="py">with</span><span class="w"> </span><span class="py">Label</span><span class="w"> </span><span class="py">and</span><span class="w"> </span><span class="py">property</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="3-hands-on-exercises" class="position-relative d-flex align-items-center group">
<span>3. Hands-On Exercises</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="3-hands-on-exercises"
aria-haspopup="dialog"
aria-label="Share link: 3. Hands-On Exercises">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Practice with working examples:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Exercise</span><span class="w"> </span><span class="py">1</span><span class="p">:</span><span class="w"> </span><span class="nc">Find</span><span class="w"> </span><span class="py">all</span><span class="w"> </span><span class="py">people</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Expected</span><span class="w"> </span><span class="py">output</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">┌─────────┐</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">│</span><span class="w"> </span><span class="nc">p</span><span class="err">.</span><span class="py">name</span><span class="w"> </span><span class="err">│</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">├─────────┤</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">│</span><span class="w"> </span><span class="py">Alice</span><span class="w"> </span><span class="err">│</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">│</span><span class="w"> </span><span class="py">Bob</span><span class="w"> </span><span class="err">│</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">│</span><span class="w"> </span><span class="py">Charlie</span><span class="w"> </span><span class="err">│</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">└─────────┘</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="4-common-pitfalls" class="position-relative d-flex align-items-center group">
<span>4. Common Pitfalls</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="4-common-pitfalls"
aria-haspopup="dialog"
aria-label="Share link: 4. Common Pitfalls">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Learn from common mistakes:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Wrong</span><span class="p">:</span><span class="w"> </span><span class="nc">Missing</span><span class="w"> </span><span class="py">variable</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(:</span><span class="nc">Person</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">name</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Error</span><span class="p">:</span><span class="w"> </span><span class="nc">name</span><span class="w"> </span><span class="py">not</span><span class="w"> </span><span class="py">bound</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Right</span><span class="p">:</span><span class="w"> </span><span class="nc">Use</span><span class="w"> </span><span class="py">variable</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="err">;</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="5-next-steps" class="position-relative d-flex align-items-center group">
<span>5. Next Steps</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="5-next-steps"
aria-haspopup="dialog"
aria-label="Share link: 5. Next Steps">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Suggested follow-up learning:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Next: Learn about relationship patterns in [MATCH Basics](/docs/tutorials/match-basics/)
</span></span></code></pre></div>
<h3 id="quick-start-tutorial" class="position-relative d-flex align-items-center group">
<span>Quick Start Tutorial</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="quick-start-tutorial"
aria-haspopup="dialog"
aria-label="Share link: Quick Start Tutorial">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="set-up-sample-data" class="position-relative d-flex align-items-center group">
<span>Set Up Sample Data</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="set-up-sample-data"
aria-haspopup="dialog"
aria-label="Share link: Set Up Sample Data">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Create</span><span class="w"> </span><span class="py">a</span><span class="w"> </span><span class="py">social</span><span class="w"> </span><span class="py">network</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="py">GRAPH</span><span class="w"> </span><span class="py">SocialNetwork</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">USE</span><span class="w"> </span><span class="py">SocialNetwork</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Create</span><span class="w"> </span><span class="py">people</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Alice"</span><span class="p">,</span><span class="w"> </span><span class="nc">age</span><span class="p">:</span><span class="w"> </span><span class="nc">30</span><span class="p">,</span><span class="w"> </span><span class="py">city</span><span class="p">:</span><span class="w"> </span><span class="s">"Seattle"</span><span class="p">})</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">CREATE</span><span class="w"> </span><span class="p">(:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Bob"</span><span class="p">,</span><span class="w"> </span><span class="nc">age</span><span class="p">:</span><span class="w"> </span><span class="nc">25</span><span class="p">,</span><span class="w"> </span><span class="py">city</span><span class="p">:</span><span class="w"> </span><span class="s">"Portland"</span><span class="p">})</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">CREATE</span><span class="w"> </span><span class="p">(:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Charlie"</span><span class="p">,</span><span class="w"> </span><span class="nc">age</span><span class="p">:</span><span class="w"> </span><span class="nc">35</span><span class="p">,</span><span class="w"> </span><span class="py">city</span><span class="p">:</span><span class="w"> </span><span class="s">"Seattle"</span><span class="p">})</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="nc">Create</span><span class="w"> </span><span class="py">relationships</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">a</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Alice"</span><span class="p">}),</span><span class="w"> </span><span class="p">(</span><span class="nc">b</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Bob"</span><span class="p">})</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">CREATE</span><span class="w"> </span><span class="p">(</span><span class="py">a</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">KNOWS</span><span class="w"> </span><span class="p">{</span><span class="py">since</span><span class="p">:</span><span class="w"> </span><span class="nc">2020</span><span class="p">}]</span><span class="err">-></span><span class="p">(</span><span class="py">b</span><span class="p">)</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">b</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Bob"</span><span class="p">}),</span><span class="w"> </span><span class="p">(</span><span class="nc">c</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Charlie"</span><span class="p">})</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">CREATE</span><span class="w"> </span><span class="p">(</span><span class="py">b</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">KNOWS</span><span class="w"> </span><span class="p">{</span><span class="py">since</span><span class="p">:</span><span class="w"> </span><span class="nc">2021</span><span class="p">}]</span><span class="err">-></span><span class="p">(</span><span class="py">c</span><span class="p">)</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">a</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Alice"</span><span class="p">}),</span><span class="w"> </span><span class="p">(</span><span class="nc">c</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Charlie"</span><span class="p">})</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">CREATE</span><span class="w"> </span><span class="p">(</span><span class="py">a</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">KNOWS</span><span class="w"> </span><span class="p">{</span><span class="py">since</span><span class="p">:</span><span class="w"> </span><span class="nc">2019</span><span class="p">}]</span><span class="err">-></span><span class="p">(</span><span class="py">c</span><span class="p">)</span><span class="err">;</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="basic-queries" class="position-relative d-flex align-items-center group">
<span>Basic Queries</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="basic-queries"
aria-haspopup="dialog"
aria-label="Share link: Basic Queries">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Query</span><span class="w"> </span><span class="py">1</span><span class="p">:</span><span class="w"> </span><span class="nc">Find</span><span class="w"> </span><span class="py">all</span><span class="w"> </span><span class="py">people</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="p">,</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">age</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">age</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Query</span><span class="w"> </span><span class="py">2</span><span class="p">:</span><span class="w"> </span><span class="nc">Find</span><span class="w"> </span><span class="py">Alice</span><span class="err">'</span><span class="py">s</span><span class="w"> </span><span class="py">friends</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">alice</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Alice"</span><span class="p">})</span><span class="err">-</span><span class="p">[:</span><span class="nc">KNOWS</span><span class="p">]</span><span class="err">-></span><span class="p">(</span><span class="nc">friend</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">friend</span><span class="err">.</span><span class="py">name</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Query</span><span class="w"> </span><span class="py">3</span><span class="p">:</span><span class="w"> </span><span class="nc">Find</span><span class="w"> </span><span class="py">people</span><span class="w"> </span><span class="py">in</span><span class="w"> </span><span class="py">Seattle</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">city</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">"Seattle"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Query</span><span class="w"> </span><span class="py">4</span><span class="p">:</span><span class="w"> </span><span class="nc">Count</span><span class="w"> </span><span class="py">relationships</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">()</span><span class="err">-</span><span class="p">[</span><span class="py">k</span><span class="p">:</span><span class="nc">KNOWS</span><span class="p">]</span><span class="err">-></span><span class="p">()</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">count</span><span class="p">(</span><span class="py">k</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">friendship_count</span><span class="err">;</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="using-the-repl" class="position-relative d-flex align-items-center group">
<span>Using the REPL</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="using-the-repl"
aria-haspopup="dialog"
aria-label="Share link: Using the REPL">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Start interactive shell</span>
</span></span><span class="line"><span class="cl">geode shell
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Enable timing</span>
</span></span><span class="line"><span class="cl"><span class="se">\t</span>iming on
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Run query</span>
</span></span><span class="line"><span class="cl">MATCH <span class="o">(</span>p:Person<span class="o">)</span> RETURN p.name<span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Check execution time</span>
</span></span><span class="line"><span class="cl">-- Query executed in 0.523ms
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Exit</span>
</span></span><span class="line"><span class="cl"><span class="se">\q</span>uit
</span></span></code></pre></div>
<h3 id="tutorial-highlights" class="position-relative d-flex align-items-center group">
<span>Tutorial Highlights</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="tutorial-highlights"
aria-haspopup="dialog"
aria-label="Share link: Tutorial Highlights">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="repl-basics-tutorial" class="position-relative d-flex align-items-center group">
<span>REPL Basics Tutorial</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="repl-basics-tutorial"
aria-haspopup="dialog"
aria-label="Share link: REPL Basics Tutorial">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Master the interactive shell:</p>
<ul>
<li><strong>Meta Commands</strong>: <code>\help</code>, <code>\connect</code>, <code>\timing</code>, <code>\format</code></li>
<li><strong>Query Execution</strong>: Single-line and multi-line queries</li>
<li><strong>Output Formats</strong>: Text tables and JSON</li>
<li><strong>Transaction Control</strong>: <code>\begin</code>, <code>\commit</code>, <code>\rollback</code></li>
<li><strong>History</strong>: Command history and search</li>
</ul>
<p><strong>See</strong>: <a
href="/docs/tutorials/repl-basics/"
>REPL Basics</a>
</p>
<h4 id="match-basics-tutorial" class="position-relative d-flex align-items-center group">
<span>MATCH Basics Tutorial</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="match-basics-tutorial"
aria-haspopup="dialog"
aria-label="Share link: MATCH Basics Tutorial">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Learn pattern matching:</p>
<ul>
<li><strong>Node Patterns</strong>: <code>(n:Label {property: value})</code></li>
<li><strong>Relationship Patterns</strong>: <code>-[:TYPE]-></code>, <code><-[:TYPE]-</code>, <code>-[:TYPE]-</code></li>
<li><strong>Path Patterns</strong>: <code>(a)-[:KNOWS*1..3]->(b)</code></li>
<li><strong>Filtering</strong>: WHERE clauses with complex conditions</li>
<li><strong>Aggregation</strong>: COUNT, SUM, AVG, MIN, MAX</li>
</ul>
<p><strong>See</strong>: <a
href="/docs/tutorials/match-basics/"
>MATCH Basics</a>
</p>
<h4 id="transaction-patterns-tutorial" class="position-relative d-flex align-items-center group">
<span>Transaction Patterns Tutorial</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="transaction-patterns-tutorial"
aria-haspopup="dialog"
aria-label="Share link: Transaction Patterns Tutorial">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Master ACID transactions:</p>
<ul>
<li><strong>Basic Transactions</strong>: BEGIN, COMMIT, ROLLBACK</li>
<li><strong>Isolation Levels</strong>: Read Committed to Serializable</li>
<li><strong>Savepoints</strong>: Partial rollback within transaction</li>
<li><strong>Error Handling</strong>: Retry logic for serialization errors</li>
<li><strong>Patterns</strong>: Optimistic concurrency, pessimistic locking</li>
</ul>
<p><strong>See</strong>: <a
href="/docs/tutorials/transaction-patterns-tutorial/"
>Transaction Patterns</a>
</p>
<h4 id="indexing-tutorial" class="position-relative d-flex align-items-center group">
<span>Indexing Tutorial</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="indexing-tutorial"
aria-haspopup="dialog"
aria-label="Share link: Indexing Tutorial">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Optimize query performance:</p>
<ul>
<li><strong>Index Types</strong>: B-tree, Hash, HNSW, R-tree, Full-text, Patricia Trie</li>
<li><strong>Index Creation</strong>: CREATE INDEX syntax for each type</li>
<li><strong>Index Usage</strong>: EXPLAIN to verify index selection</li>
<li><strong>Performance</strong>: Before/after index benchmarks</li>
<li><strong>Maintenance</strong>: Index statistics and rebuilding</li>
</ul>
<p><strong>See</strong>: <a
href="/docs/tutorials/indexing-tutorial/"
>Indexing Tutorial</a>
</p>
<h4 id="index-optimization-tutorial" class="position-relative d-flex align-items-center group">
<span>Index Optimization Tutorial</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="index-optimization-tutorial"
aria-haspopup="dialog"
aria-label="Share link: Index Optimization Tutorial">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Advanced index strategies:</p>
<ul>
<li><strong>EXPLAIN Analysis</strong>: Understand query plans</li>
<li><strong>PROFILE Analysis</strong>: Measure actual performance</li>
<li><strong>Composite Indexes</strong>: Multi-column indexes</li>
<li><strong>Partial Indexes</strong>: Filtered indexes for subsets</li>
<li><strong>Index Selection</strong>: When to use each index type</li>
</ul>
<p><strong>See</strong>: <a
href="/docs/tutorials/index-optimization/"
>Index Optimization</a>
</p>
<h4 id="vector-search-tutorial" class="position-relative d-flex align-items-center group">
<span>Vector Search Tutorial</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="vector-search-tutorial"
aria-haspopup="dialog"
aria-label="Share link: Vector Search Tutorial">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Implement similarity search:</p>
<ul>
<li><strong>HNSW Indexes</strong>: High-performance approximate search</li>
<li><strong>Embeddings</strong>: Generate and store vector embeddings</li>
<li><strong>K-NN Queries</strong>: Find similar items</li>
<li><strong>Distance Metrics</strong>: L2, cosine, dot product</li>
<li><strong>Hybrid Search</strong>: Combine vector and keyword search</li>
</ul>
<p><strong>See</strong>: <a
href="/docs/tutorials/vector-search-tutorial/"
>Vector Search Tutorial</a>
</p>
<h4 id="graph-algorithms-tutorial" class="position-relative d-flex align-items-center group">
<span>Graph Algorithms Tutorial</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="graph-algorithms-tutorial"
aria-haspopup="dialog"
aria-label="Share link: Graph Algorithms Tutorial">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Apply graph algorithms:</p>
<ul>
<li><strong>PageRank</strong>: Identify important nodes</li>
<li><strong>Community Detection</strong>: Find clusters</li>
<li><strong>Shortest Paths</strong>: Dijkstra and A* algorithms</li>
<li><strong>Centrality</strong>: Betweenness, closeness, degree</li>
<li><strong>Practical Examples</strong>: Social networks, recommendations</li>
</ul>
<p><strong>See</strong>: <a
href="/docs/tutorials/graph-algorithms-tutorial/"
>Graph Algorithms Tutorial</a>
</p>
<h3 id="sample-datasets" class="position-relative d-flex align-items-center group">
<span>Sample Datasets</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="sample-datasets"
aria-haspopup="dialog"
aria-label="Share link: Sample Datasets">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="social-network" class="position-relative d-flex align-items-center group">
<span>Social Network</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="social-network"
aria-haspopup="dialog"
aria-label="Share link: Social Network">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Create</span><span class="w"> </span><span class="py">sample</span><span class="w"> </span><span class="py">social</span><span class="w"> </span><span class="py">network</span><span class="w"> </span><span class="p">(</span><span class="py">10</span><span class="w"> </span><span class="py">people</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Alice"</span><span class="p">,</span><span class="w"> </span><span class="nc">age</span><span class="p">:</span><span class="w"> </span><span class="nc">30</span><span class="p">,</span><span class="w"> </span><span class="py">interests</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s">"hiking"</span><span class="p">,</span><span class="w"> </span><span class="s">"reading"</span><span class="p">]})</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">CREATE</span><span class="w"> </span><span class="p">(:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Bob"</span><span class="p">,</span><span class="w"> </span><span class="nc">age</span><span class="p">:</span><span class="w"> </span><span class="nc">25</span><span class="p">,</span><span class="w"> </span><span class="py">interests</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s">"gaming"</span><span class="p">,</span><span class="w"> </span><span class="s">"cooking"</span><span class="p">]})</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">CREATE</span><span class="w"> </span><span class="p">(:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Charlie"</span><span class="p">,</span><span class="w"> </span><span class="nc">age</span><span class="p">:</span><span class="w"> </span><span class="nc">35</span><span class="p">,</span><span class="w"> </span><span class="py">interests</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s">"hiking"</span><span class="p">,</span><span class="w"> </span><span class="s">"photography"</span><span class="p">]})</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="kd">...</span><span class="w"> </span><span class="nc">7</span><span class="w"> </span><span class="py">more</span><span class="w"> </span><span class="py">people</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Create</span><span class="w"> </span><span class="py">friendships</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">a</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Alice"</span><span class="p">}),</span><span class="w"> </span><span class="p">(</span><span class="nc">b</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Bob"</span><span class="p">})</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">CREATE</span><span class="w"> </span><span class="p">(</span><span class="py">a</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">KNOWS</span><span class="w"> </span><span class="p">{</span><span class="py">since</span><span class="p">:</span><span class="w"> </span><span class="nc">2020</span><span class="p">}]</span><span class="err">-></span><span class="p">(</span><span class="py">b</span><span class="p">)</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="kd">...</span><span class="w"> </span><span class="py">more</span><span class="w"> </span><span class="py">relationships</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="e-commerce" class="position-relative d-flex align-items-center group">
<span>E-Commerce</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="e-commerce"
aria-haspopup="dialog"
aria-label="Share link: E-Commerce">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Products</span><span class="w"> </span><span class="py">and</span><span class="w"> </span><span class="py">categories</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(:</span><span class="nc">Product</span><span class="w"> </span><span class="p">{</span><span class="py">sku</span><span class="p">:</span><span class="w"> </span><span class="s">"WIDGET-001"</span><span class="p">,</span><span class="w"> </span><span class="nc">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Widget"</span><span class="p">,</span><span class="w"> </span><span class="nc">price</span><span class="p">:</span><span class="w"> </span><span class="nc">29</span><span class="mf">.99</span><span class="p">})</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(:</span><span class="nc">Category</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Widgets"</span><span class="p">})</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="nc">Customers</span><span class="w"> </span><span class="py">and</span><span class="w"> </span><span class="py">orders</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(:</span><span class="nc">Customer</span><span class="w"> </span><span class="p">{</span><span class="py">id</span><span class="p">:</span><span class="w"> </span><span class="nc">1</span><span class="p">,</span><span class="w"> </span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Alice"</span><span class="p">,</span><span class="w"> </span><span class="nc">email</span><span class="p">:</span><span class="w"> </span><span class="s">"
[email protected]"</span><span class="p">})</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">CREATE</span><span class="w"> </span><span class="p">(:</span><span class="nc">Order</span><span class="w"> </span><span class="p">{</span><span class="py">order_id</span><span class="p">:</span><span class="w"> </span><span class="s">"ORD-001"</span><span class="p">,</span><span class="w"> </span><span class="nc">total</span><span class="p">:</span><span class="w"> </span><span class="nc">59</span><span class="mf">.98</span><span class="p">,</span><span class="w"> </span><span class="py">status</span><span class="p">:</span><span class="w"> </span><span class="s">"shipped"</span><span class="p">})</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="nc">Relationships</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Product</span><span class="w"> </span><span class="p">{</span><span class="py">sku</span><span class="p">:</span><span class="w"> </span><span class="s">"WIDGET-001"</span><span class="p">}),</span><span class="w"> </span><span class="p">(</span><span class="nc">c</span><span class="p">:</span><span class="nc">Category</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Widgets"</span><span class="p">})</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">CREATE</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">IN_CATEGORY</span><span class="p">]</span><span class="err">-></span><span class="p">(</span><span class="py">c</span><span class="p">)</span><span class="err">;</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="knowledge-graph" class="position-relative d-flex align-items-center group">
<span>Knowledge Graph</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="knowledge-graph"
aria-haspopup="dialog"
aria-label="Share link: Knowledge Graph">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Entities</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Alan Turing"</span><span class="p">,</span><span class="w"> </span><span class="nc">born</span><span class="p">:</span><span class="w"> </span><span class="nc">1912</span><span class="p">,</span><span class="w"> </span><span class="py">died</span><span class="p">:</span><span class="w"> </span><span class="nc">1954</span><span class="p">})</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(:</span><span class="nc">Concept</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Computer Science"</span><span class="p">})</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">CREATE</span><span class="w"> </span><span class="p">(:</span><span class="nc">Institution</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"University of Cambridge"</span><span class="p">})</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="nc">Relationships</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Alan Turing"</span><span class="p">}),</span><span class="w"> </span><span class="p">(</span><span class="nc">c</span><span class="p">:</span><span class="nc">Concept</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Computer Science"</span><span class="p">})</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">CREATE</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">CONTRIBUTED_TO</span><span class="p">]</span><span class="err">-></span><span class="p">(</span><span class="py">c</span><span class="p">)</span><span class="err">;</span><span class="w">
</span></span></span></code></pre></div>
<h3 id="exercise-solutions" class="position-relative d-flex align-items-center group">
<span>Exercise Solutions</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="exercise-solutions"
aria-haspopup="dialog"
aria-label="Share link: Exercise Solutions">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><p>Each tutorial includes exercises with solutions:</p>
<h4 id="example-exercise" class="position-relative d-flex align-items-center group">
<span>Example Exercise</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="example-exercise"
aria-haspopup="dialog"
aria-label="Share link: Example Exercise">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p><strong>Exercise</strong>: Find people who have at least 2 friends.</p>
<p><strong>Solution</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">KNOWS</span><span class="p">]</span><span class="err">-></span><span class="p">(</span><span class="py">friend</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WITH</span><span class="w"> </span><span class="py">p</span><span class="p">,</span><span class="w"> </span><span class="py">count</span><span class="p">(</span><span class="py">friend</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">friend_count</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">friend_count</span><span class="w"> </span><span class="err">></span><span class="p">=</span><span class="w"> </span><span class="py">2</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="p">,</span><span class="w"> </span><span class="py">friend_count</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</span><span class="w"> </span><span class="py">friend_count</span><span class="w"> </span><span class="py">DESC</span><span class="err">;</span><span class="w">
</span></span></span></code></pre></div><p><strong>Explanation</strong>:</p>
<ul>
<li>MATCH finds all friendships</li>
<li>WITH aggregates friends per person</li>
<li>WHERE filters for 2+ friends</li>
<li>RETURN shows results</li>
</ul>
<h3 id="best-practices-learned" class="position-relative d-flex align-items-center group">
<span>Best Practices Learned</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="best-practices-learned"
aria-haspopup="dialog"
aria-label="Share link: Best Practices Learned">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><p>Throughout tutorials, you’ll learn:</p>
<h4 id="query-writing" class="position-relative d-flex align-items-center group">
<span>Query Writing</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="query-writing"
aria-haspopup="dialog"
aria-label="Share link: Query Writing">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><ul>
<li>Start with selective filters</li>
<li>Use LIMIT to prevent runaway queries</li>
<li>Return only needed properties</li>
<li>Use parameters instead of literals</li>
</ul>
<h4 id="performance" class="position-relative d-flex align-items-center group">
<span>Performance</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="performance"
aria-haspopup="dialog"
aria-label="Share link: Performance">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><ul>
<li>Create indexes for frequent queries</li>
<li>Use EXPLAIN before optimizing</li>
<li>Profile production queries</li>
<li>Monitor query patterns</li>
</ul>
<h4 id="data-modeling" class="position-relative d-flex align-items-center group">
<span>Data Modeling</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="data-modeling"
aria-haspopup="dialog"
aria-label="Share link: Data Modeling">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><ul>
<li>Model relationships explicitly</li>
<li>Use labels for categorization</li>
<li>Choose appropriate property types</li>
<li>Denormalize for performance</li>
</ul>
<h4 id="transactions" class="position-relative d-flex align-items-center group">
<span>Transactions</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="transactions"
aria-haspopup="dialog"
aria-label="Share link: Transactions">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><ul>
<li>Keep transactions short</li>
<li>Handle errors gracefully</li>
<li>Use appropriate isolation level</li>
<li>Implement retry logic</li>
</ul>
<h3 id="common-patterns" class="position-relative d-flex align-items-center group">
<span>Common Patterns</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="common-patterns"
aria-haspopup="dialog"
aria-label="Share link: Common Patterns">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="find-friends-of-friends" class="position-relative d-flex align-items-center group">
<span>Find Friends of Friends</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="find-friends-of-friends"
aria-haspopup="dialog"
aria-label="Share link: Find Friends of Friends">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">me</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Alice"</span><span class="p">})</span><span class="err">-</span><span class="p">[:</span><span class="nc">KNOWS</span><span class="err">*</span><span class="nc">2</span><span class="p">]</span><span class="err">-></span><span class="p">(</span><span class="py">fof</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">fof</span><span class="w"> </span><span class="err"><></span><span class="w"> </span><span class="py">me</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">DISTINCT</span><span class="w"> </span><span class="py">fof</span><span class="err">.</span><span class="py">name</span><span class="err">;</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="recommendation-engine" class="position-relative d-flex align-items-center group">
<span>Recommendation Engine</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="recommendation-engine"
aria-haspopup="dialog"
aria-label="Share link: Recommendation Engine">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">me</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Alice"</span><span class="p">})</span><span class="err">-</span><span class="p">[:</span><span class="nc">LIKES</span><span class="p">]</span><span class="err">-></span><span class="p">(</span><span class="nc">item</span><span class="p">)</span><span class="err"><-</span><span class="p">[:</span><span class="nc">LIKES</span><span class="p">]</span><span class="err">-</span><span class="p">(</span><span class="py">other</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">other</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">LIKES</span><span class="p">]</span><span class="err">-></span><span class="p">(</span><span class="py">recommendation</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">NOT</span><span class="w"> </span><span class="p">(</span><span class="py">me</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">LIKES</span><span class="p">]</span><span class="err">-></span><span class="p">(</span><span class="py">recommendation</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">recommendation</span><span class="err">.</span><span class="py">name</span><span class="p">,</span><span class="w"> </span><span class="py">count</span><span class="p">(</span><span class="err">*</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">score</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</span><span class="w"> </span><span class="py">score</span><span class="w"> </span><span class="py">DESC</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">LIMIT</span><span class="w"> </span><span class="py">10</span><span class="err">;</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="shortest-path" class="position-relative d-flex align-items-center group">
<span>Shortest Path</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="shortest-path"
aria-haspopup="dialog"
aria-label="Share link: Shortest Path">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">MATCH</span><span class="w"> </span><span class="py">path</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">shortestPath</span><span class="p">(</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">(</span><span class="py">a</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Alice"</span><span class="p">})</span><span class="err">-</span><span class="p">[</span><span class="err">*</span><span class="p">]</span><span class="err">-</span><span class="p">(</span><span class="nc">b</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Bob"</span><span class="p">})</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">RETURN</span><span class="w"> </span><span class="py">path</span><span class="p">,</span><span class="w"> </span><span class="py">length</span><span class="p">(</span><span class="py">path</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">hops</span><span class="err">;</span><span class="w">
</span></span></span></code></pre></div>
<h3 id="troubleshooting-tips" class="position-relative d-flex align-items-center group">
<span>Troubleshooting Tips</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="troubleshooting-tips"
aria-haspopup="dialog"
aria-label="Share link: Troubleshooting Tips">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="query-not-returning-results" class="position-relative d-flex align-items-center group">
<span>Query Not Returning Results</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="query-not-returning-results"
aria-haspopup="dialog"
aria-label="Share link: Query Not Returning Results">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><ol>
<li>Verify data exists: <code>MATCH (n) RETURN count(n);</code></li>
<li>Check labels: <code>MATCH (n) RETURN DISTINCT labels(n);</code></li>
<li>Simplify pattern: Remove constraints one by one</li>
<li>Use EXPLAIN: Verify query plan</li>
</ol>
<h4 id="slow-queries" class="position-relative d-flex align-items-center group">
<span>Slow Queries</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="slow-queries"
aria-haspopup="dialog"
aria-label="Share link: Slow Queries">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><ol>
<li>Check for indexes: <code>SHOW INDEXES;</code></li>
<li>Use PROFILE: Identify bottlenecks</li>
<li>Create missing indexes</li>
<li>Limit result size</li>
</ol>
<h4 id="transaction-errors" class="position-relative d-flex align-items-center group">
<span>Transaction Errors</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="transaction-errors"
aria-haspopup="dialog"
aria-label="Share link: Transaction Errors">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><ol>
<li>Check isolation level</li>
<li>Implement retry logic</li>
<li>Reduce transaction scope</li>
<li>Check for deadlocks</li>
</ol>
<h3 id="learn-more" class="position-relative d-flex align-items-center group">
<span>Learn More</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="learn-more"
aria-haspopup="dialog"
aria-label="Share link: Learn More">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><p>After completing tutorials:</p>
<ul>
<li><strong><a
href="/docs/gql/guide/"
>GQL Guide</a>
</strong> - Complete language reference</li>
<li><strong><a
href="/docs/model/data-model-and-types/"
>Data Model</a>
</strong> - Graph modeling in depth</li>
<li><strong><a
href="/docs/query/performance-tuning/"
>Query Optimization</a>
</strong> - Advanced optimization</li>
<li><strong><a
href="/docs/use-cases/"
>Use Cases</a>
</strong> - Real-world applications</li>
<li><strong><a
href="/docs/reference/api-reference-complete/"
>API Reference</a>
</strong> - Complete API documentation</li>
</ul>
<h3 id="next-steps" class="position-relative d-flex align-items-center group">
<span>Next Steps</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="next-steps"
aria-haspopup="dialog"
aria-label="Share link: Next Steps">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><p>Start your learning journey:</p>
<ol>
<li><strong><a
href="/docs/tutorials/repl-basics/"
>Begin with REPL Basics</a>
</strong> - Get comfortable with the shell</li>
<li><strong><a
href="/docs/tutorials/match-basics/"
>Learn MATCH Patterns</a>
</strong> - Master graph queries</li>
<li><strong><a
href="/docs/tutorials/transaction-patterns-tutorial/"
>Practice Transactions</a>
</strong> - Ensure data consistency</li>
<li><strong><a
href="/docs/tutorials/indexing-tutorial/"
>Optimize with Indexes</a>
</strong> - Improve performance</li>
<li><strong><a
href="/docs/tutorials/graph-algorithms-tutorial/"
>Explore Advanced Topics</a>
</strong> - Apply algorithms</li>
</ol>
<h3 id="contributing-tutorials" class="position-relative d-flex align-items-center group">
<span>Contributing Tutorials</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="contributing-tutorials"
aria-haspopup="dialog"
aria-label="Share link: Contributing Tutorials">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><p>Have a tutorial idea? Contributions welcome!</p>
<p>See <a
href="/docs/contribute/"
>Contributing Guide</a>
for how to submit new tutorials or improvements.</p>