Vue d’ensemble
L'instruction FOR
vous permet de désassembler une liste en lignes individuelles en étendant la table de travail actuelle.
<for statement> ::= "FOR" <for item> [ <for ordinality or offset> ]
<for item> ::=
<binding variable> "IN" <list value expression>
<for ordinality or offset> ::=
"WITH" { "ORDINALITY" | "OFFSET" } <binding variable>
Détails
- Le nom de la variable de liaison dans
<for ordinality or offset>
doit être différent de la variable de liaison dans<for item>
. - Le
<for ordinality or offset>
définit une variable qui peut être utilisée pour suivre la position des éléments dans la liste :ORDINALITY
fournit un indexage basé sur un (commençant à 1).OFFSET
fournit un indexage basé sur zéro (commençant à 0).
Désassembler une Liste
FOR item IN [1,2,3]
RETURN item
Résultat :
item |
---|
1 |
2 |
3 |
Désassembler une Table de Liaison
LET user = "Alex"
LET interests = ["tennis", "violin"]
FOR interest IN interests
RETURN user, interest
Résultat :
user | interest |
---|---|
Alex | tennis |
Alex | violin |
Désassembler une Variable de Groupe
Cette requête récupère un chemin le plus court entre C1
et C3
, et retourne les valeurs de la propriété label
sur les bords du chemin :
MATCH SHORTEST 1 ({_id: "C1"})-[trans:Transfers]-{1,6}({_id: "C3"})
FOR tran IN trans
RETURN tran.label
Résultat :
tran.label |
---|
normal |
normal |
Dans cette requête, la variable trans
, déclarée dans un chemin quantifié, détient un degré de référence de groupe lorsqu'elle est utilisée en dehors du motif de chemin. Pour la convertir en un degré de référence singleton, vous pouvez utiliser l'instruction FOR
pour la désassembler.
WITH ORDINALITY
Cette requête collecte des éléments aux positions paires d'une liste vers une nouvelle liste :
FOR item in ["a", "b", "c", "d"] WITH ORDINALITY index // index commence à 1
FILTER index %2 = 0
RETURN collect_list(item)
Résultat :
collect_list(item) |
---|
["b","d"] |
WITH OFFSET
Cette requête retourne le deuxième élément d'une liste :
FOR item in ["a", "b", "c", "d"] WITH OFFSET index // index commence à 0
FILTER index = 1
RETURN item
Résultat :
item |
---|
b |