Vue d’ensemble
L'instruction LET
vous permet d'ajouter des colonnes à la table de travail actuelle en définissant de nouvelles variables. Chaque variable se voit attribuer une valeur à l'aide de l'opérateur =
.
<let statement> ::=
"LET" <let variable definition> [ { "," <let variable definition> }... ]
<let variable definition> ::=
<binding variable> "=" <value expression>
| <value variable definition>
<value variable definition> ::=
"VALUE" <binding variable> [ [ "::" | "TYPED"] <value type> ] "=" <value expression>
Détails
LET
ne change pas le nombre de records de la table de travail.LET
ne modifie pas les colonnes existantes de la table de travail sauf si vous redéfinissez des variables existantes dansLET
.- Vous ne pouvez pas définir une nouvelle variable et la référencer dans le même
LET
. - Si une variable existante est référencée dans des
<value expression>
s au sein deLET
, l'instruction
LET est effectivement remplacée par l'instruction
CALL (IBVRL) { BVDB RETURN RIL }
, où,IBVRL
(Incoming Binding Variables Reference) est la liste séparée par des virgules de toutes les variables référencées dans des<value expression>
s.BVDB
(Binding Variable Definition Block) est la concaténation séparée par des espaces de tous les<let variable definition>
s.RIL
(Return Item List) est la liste séparée par des virgules de tous les<binding variable>
s.
Exemple de Graph
Les exemples suivants sont exécutés sur ce graph :
Pour créer ce graph, exécutez la requête suivante contre un graph vide :
INSERT (p1:Paper {_id:"P1", title:'Efficient Graph Search', score:6, author:'Alex'}),
(p2:Paper {_id:"P2", title:'Optimizing Queries', score:9, author:'Alex'}),
(p3:Paper {_id:"P3", title:'Path Patterns', score:6, author:'Zack'}),
(p1)-[:Cites]->(p2),
(p2)-[:Cites]->(p3)
Définir des Variables avec des Constantes
LET s = 6, a = "Alex"
MATCH (p:Paper) WHERE p.score = s AND p.author = a
RETURN p.title, s, a
Résultat :
p.title | s | a |
---|---|---|
Efficient Graph Search | 6 | Alex |
Définir des Variables avec des Variables Existantes
MATCH (x:Paper)
LET recommended = x.score > 7
RETURN x.title, recommended
Résultat :
x.title | recommended |
---|---|
Optimizing Queries | 1 |
Efficient Graph Search | 0 |
Path Patterns | 0 |
MATCH p = ()->{1,2}()
LET length = path_length(p)
RETURN p, length
Résultat :
p | length |
---|---|
(:Paper {_id: "P1", score: 6, title: "Efficient Graph Search", author: "Alex"})-[:Cites]->(:Paper {_id: "P2", score: 9, title: "Optimizing Queries", author: "Alex"}) | 1 |
(:Paper {_id: "P2", score: 9, title: "Optimizing Queries", author: "Alex"})-[:Cites]->(:Paper {_id: "P3", score: 6, title: "Path Patterns", author: "Zack"}) | 1 |
(:Paper {_id: "P1", score: 6, title: "Efficient Graph Search", author: "Alex"})-[:Cites]->(:Paper {_id: "P2", score: 9, title: "Optimizing Queries", author: "Alex"})-[:Cites]->(:Paper {_id: "P3", score: 6, title: "Path Patterns", author: "Zack"}) | 2 |