1
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Graph Queries
2
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
3
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Raw Cypher passthrough
4
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
5
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Every high-level command is built on Cypher queries against FalkorDB. You can drop to raw Cypher for anything the built-in commands don't cover:
6
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
7
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
8
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
navegador query "MATCH (f:Function) RETURN f.name, f.file LIMIT 10"
9
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
10
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
11
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Results are printed as a table to stdout. Pipe with `--format json` if you need machine-readable output:
12
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
13
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
14
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
navegador query "MATCH (f:Function) RETURN f.name, f.file" --format json
15
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
16
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
17
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
!!! warning
18
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
`navegador query` executes writes as well as reads. Use `MATCH` / `RETURN` for inspection. Use `CREATE` / `MERGE` / `DELETE` only if you know what you're doing — there is no undo.
19
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
20
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
21
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
22
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Useful example queries
23
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
24
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Find all functions decorated with `@login_required`
25
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
26
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```cypher
27
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
MATCH (d:Decorator {name: "login_required"})-[:DECORATES]->(f:Function)
28
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
RETURN f.name, f.file, f.line
29
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
ORDER BY f.file
30
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
31
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
32
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Find all functions in a specific file
33
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
34
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```cypher
35
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
MATCH (file:File {path: "src/auth/service.py"})-[:CONTAINS]->(f:Function)
36
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
RETURN f.name, f.line, f.signature
37
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
38
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
39
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Find everything a function calls (two hops)
40
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
41
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```cypher
42
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
MATCH (f:Function {name: "process_payment"})-[:CALLS*1..2]->(callee:Function)
43
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
RETURN DISTINCT callee.name, callee.file
44
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
45
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
46
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Find all callers of a function
47
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
48
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```cypher
49
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
MATCH (caller:Function)-[:CALLS]->(f:Function {name: "validate_token"})
50
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
RETURN caller.name, caller.file
51
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
52
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
53
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Find all rules in a domain
54
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
55
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```cypher
56
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
MATCH (d:Domain {name: "Payments"})<-[:BELONGS_TO]-(r:Rule)
57
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
RETURN r.name, r.severity, r.description
58
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
ORDER BY r.severity
59
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
60
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
61
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Find all concepts implemented by code in a file
62
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
63
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```cypher
64
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
MATCH (file:File {path: "src/payments/processor.py"})-[:CONTAINS]->(f)
65
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
-[:ANNOTATES]-(c:Concept)
66
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
RETURN DISTINCT c.name, c.description
67
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
68
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
69
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Find all decisions that relate to a domain
70
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
71
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```cypher
72
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
MATCH (d:Domain {name: "Infrastructure"})<-[:BELONGS_TO]-(dec:Decision)
73
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
RETURN dec.name, dec.status, dec.date, dec.rationale
74
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
ORDER BY dec.date DESC
75
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
76
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
77
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Find classes that inherit from a base class
78
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
79
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```cypher
80
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
MATCH (child:Class)-[:INHERITS]->(parent:Class {name: "BaseProcessor"})
81
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
RETURN child.name, child.file
82
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
83
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
84
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Find the full inheritance chain for a class
85
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
86
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```cypher
87
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
MATCH path = (c:Class {name: "StripeProcessor"})-[:INHERITS*]->(ancestor)
88
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
RETURN [node IN nodes(path) | node.name] AS hierarchy
89
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
90
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
91
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Find wiki pages that document a concept
92
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
93
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```cypher
94
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
MATCH (wp:WikiPage)-[:DOCUMENTS]->(c:Concept {name: "Idempotency"})
95
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
RETURN wp.title, wp.url
96
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
97
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
98
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Find all functions annotated with a specific rule
99
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
100
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```cypher
101
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
MATCH (r:Rule {name: "RequireIdempotencyKey"})-[:GOVERNS]->(f:Function)
102
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
RETURN f.name, f.file, f.line
103
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
104
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
105
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Find what a person is assigned to
106
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
107
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```cypher
108
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
MATCH (p:Person {name: "Alice Chen"})<-[:ASSIGNED_TO]-(item)
109
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
RETURN labels(item)[0] AS type, item.name
110
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
111
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
112
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
113
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
114
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## navegador stats
115
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
116
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Get a high-level count of everything in the graph:
117
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
118
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
119
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
navegador stats
120
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
navegador stats --json
121
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
122
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
123
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Output breakdown:
124
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
125
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Metric | What it counts |
126
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|---|---|
127
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Repositories | `Repository` nodes |
128
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Files | `File` nodes |
129
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Classes | `Class` nodes |
130
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Functions + Methods | `Function` + `Method` nodes combined |
131
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Decorators | `Decorator` nodes |
132
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Imports | `Import` nodes |
133
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Domains | `Domain` nodes |
134
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Concepts | `Concept` nodes |
135
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Rules | `Rule` nodes |
136
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Decisions | `Decision` nodes |
137
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| People | `Person` nodes |
138
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| WikiPages | `WikiPage` nodes |
139
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Total edges | All relationship edges |
140
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
141
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Use `--json` to feed stats into CI dashboards or coverage checks.
142
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!