Skip to content

Commit 568655e

Browse files
committed
Add dynamic label and type support in label expressions
1 parent 11b2004 commit 568655e

File tree

4 files changed

+102
-0
lines changed

4 files changed

+102
-0
lines changed

modules/ROOT/pages/clauses/filter.adoc

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,38 @@ RETURN p.name AS person,
9393
3+|Rows: 2
9494
|===
9595

96+
[[filter-on-dynamic-labels-and-types]]
97+
== Filter on dynamic labels and types
98+
99+
To filter on a label or type using a dynamically computed value, use `$(<expr>)`:
100+
101+
.Parameters
102+
[source, parameters]
103+
----
104+
{
105+
"label": "Swedish"
106+
}
107+
----
108+
109+
.Filter on a dynamically computed node label
110+
// tag::clauses_where_dynamic[]
111+
[source, cypher]
112+
----
113+
MATCH (n)
114+
FILTER n:$($label)
115+
RETURN labels(n) AS labels
116+
----
117+
// end::clauses_where_dynamic[]
118+
119+
.Result
120+
[role="queryresult",options="header,footer",cols="1*<m"]
121+
|===
122+
| labels
123+
| ["Person", "Swedish"]
124+
1+d|Rows: 1
125+
|===
126+
127+
96128
[[filter-on-dynamic-properties]]
97129
== Filter on dynamic properties
98130

modules/ROOT/pages/clauses/where.adoc

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,38 @@ RETURN f.name AS oldFriend
103103
|===
104104

105105

106+
[[filter-on-dynamic-labels-and-types]]
107+
== Filter on dynamic labels and types
108+
109+
To filter on a label or type using a dynamically computed value, use `$(<expr>)`:
110+
111+
.Parameters
112+
[source, parameters]
113+
----
114+
{
115+
"label": "Swedish"
116+
}
117+
----
118+
119+
.Filter on a dynamically computed node label
120+
// tag::clauses_where_dynamic[]
121+
[source, cypher]
122+
----
123+
MATCH (n)
124+
WHERE n:$($label)
125+
RETURN labels(n) AS labels
126+
----
127+
// end::clauses_where_dynamic[]
128+
129+
.Result
130+
[role="queryresult",options="header,footer",cols="1*<m"]
131+
|===
132+
| labels
133+
| ["Person", "Swedish"]
134+
1+d|Rows: 1
135+
|===
136+
137+
106138
[[filter-on-dynamic-properties]]
107139
== Filter on dynamic properties
108140

modules/ROOT/pages/deprecations-additions-removals-compatibility.adoc

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,31 @@ Cypher 25 was introduced in Neo4j 2025.06 and can only be used on Neo4j 2025.06+
2222
Features removed in Cypher 25 are still available on Neo4j 2025.06+ databases either by prepending a query with `CYPHER 5` or by having Cypher 5 as the default language for the database.
2323
For more information, see xref:queries/select-version.adoc[].
2424

25+
[[cypher-deprecations-additions-removals-2025.07]]
26+
== Neo4j 2025.07
27+
28+
=== Updated in Cypher 25
29+
30+
[cols="2", options="header"]
31+
|===
32+
| Feature
33+
| Details
34+
35+
a|
36+
label:functionality[]
37+
label:updated[]
38+
[source, cypher, role="noheader"]
39+
----
40+
MATCH (n)-[r]->()
41+
WHERE n:$(<expr>)
42+
WITH n, r:$(<expr>) AS hasType
43+
RETURN n:$(<expr>)
44+
----
45+
46+
| Added the ability to dynamically reference node labels and relationship types in places where xref:patterns/reference.adoc#label-expressions[label expressions] are allowed.
47+
|===
48+
49+
2550
[[cypher-deprecations-additions-removals-2025.06]]
2651
== Neo4j 2025.06
2752

modules/ROOT/pages/patterns/reference.adoc

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,19 @@ The following matches relationships that have a type that is neither `A` nor `B`
314314
-[:!A&!B]->
315315
----
316316

317+
[[dynamic-label-and-type-expressions]]
318+
=== Dynamic Label and Type expressions
319+
320+
Node labels and relationship types can be referenced dynamically in expressions, parameters, and variables within label expressions.
321+
322+
.Syntax for creating nodes and relationships dynamically
323+
[source, syntax]
324+
----
325+
dynamicLabelExpression ::= ":$(" + valueExpression ")"
326+
----
327+
328+
The valueExpression must evaluate to a `STRING NOT NULL | LIST<STRING NOT NULL> NOT NULL` value.
329+
317330
[[property-key-value-expressions]]
318331
== Property key-value expressions
319332

0 commit comments

Comments
 (0)