WHERE conserve les lignes dans le flux de données qui répondent aux conditions, et élimine celles qui ne répondent pas aux conditions.
Syntaxe 1: WHERE <condition>
Syntaxe 2: WHERE <query>
(En développement)
Entrée
- <condition>: Condition de jugement, les lignes jugées comme VRAIES seront conservées
- <query>: Instruction de requête, les lignes qui ont un retour seront conservées
L'instruction qui suit immédiatement la clause WHERE doit appeler l'alias (ou son alias homologue) qui entre dans la clause WHERE, sinon cette instruction ne sera pas valide.
Par exemple, comparer n1 et n2 qui sont hétérologues, les retourner s'ils ont la même couleur :
find().nodes({shape == "square"}) as n1
find().nodes({shape == "round"}) as n2
where n1.color == n2.color
return n1, n2
WHERE <condition>
Exemple de graphe : (à utiliser pour les exemples suivants)
Exécutez les UQLs ci-dessous un par un dans un graphset vide pour créer des données de graphe :create().node_schema("student").node_schema("course")
create().node_property(@*, "name").node_property(@student, "age", int32).node_property(@course, "credit", int32)
insert().into(@student).nodes([{_id:"S001", _uuid:1, name:"Jason", age:25}, {_id:"S002", _uuid:2, name:"Lina", age:23}, {_id:"S003", _uuid:3, name:"Eric", age:24}, {_id:"S004", _uuid:4, name:"Emma", age:26}, {_id:"S005", _uuid:5, name:"Pepe", age:24}])
insert().into(@course).nodes([{_id:"C001", _uuid:6, name:"French", credit:4}, {_id:"C002", _uuid:7, name:"Math", credit:5}])
insert().into(@default).edges([{_uuid:1, _from_uuid:1, _to_uuid:6}, {_uuid:2, _from_uuid:2, _to_uuid:6}, {_uuid:3, _from_uuid:3, _to_uuid:6}, {_uuid:4, _from_uuid:2, _to_uuid:7}, {_uuid:5, _from_uuid:3, _to_uuid:7}, {_uuid:6, _from_uuid:4, _to_uuid:7}, {_uuid:7, _from_uuid:5, _to_uuid:7}])
Exemple : Trouver des paths d'un pas @course-@student, si le crédit du cours est 4, ou si l'âge de l'étudiant est 24, alors retourner le path
n({@course} as a).e().n({@student} as b) as p
where a.credit == 4 || b.age == 24
return p{*}
French <---- Jason
French <---- Lina
French <---- Eric
Math <---- Pepe
Math <---- Eric
WHERE <query>
(En Développement)
Exemple : trouver une carte intermédiaire avec l'alias 'agent' qui satisfait les conditions comme montré dans l'image ci-dessous : La carte CA002 transfère de l'argent à la carte CA001 via agent ; agent est un voisin de la carte CA003 dans un rayon de 2 sauts
n({_id == "CA002"}).re().n({@card} as agent).re().n({_id == "CA001"})
where n(agent).e()[*:2].n({_id == "CA003"})
return agent{*}
Analyse : WHERE filtre davantage les colonnes de données "agent": il juge si les plus courts paths de "agent" à la carte CA003 existent, si c'est vrai, alors il passe "agent" au "return" suivant
L'exemple ci-dessus peut être mis dans un modèle de sous-graphe comme montré ci-dessous :
subgraph([
n({_id == "CA002"}).re().n({@card} as agent).re().n({_id == "CA001"}),
n(agent).e()[*:2].n({_id == "CA003"})
])
return agent{*}