Vue d’ensemble
L'instruction
FILTER
vous permet de filtrer les enregistrements dans la table de travail actuelle qui ne satisfont pas aux conditions spécifiées. Elle fait généralement référence à des colonnes de la table de travail.
<filter statement> ::= "FILTER" [ "WHERE" ] <search condition>
Les FILTER
et FILTER WHERE
fonctionnent de la même manière. L'utilisation de WHERE
dans ce contexte est souvent une question de style ou de lisibilité. Par exemple :
MATCH (n:User)
FILTER n.age > 25
RETURN n
est fonctionnellement identique à :
MATCH (n:User)
FILTER WHERE n.age > 25
RETURN n
Dans les deux cas, l'instruction
FILTER
renverra uniquement les nœuds où l'âge de l'utilisateur est supérieur à 25.
FILTER vs. MATCH WHERE
L'instruction
FILTER
et la clause WHERE
utilisée dans l'instruction
MATCH
sont toutes deux utilisées pour appliquer des conditions dans les requêtes, mais elles diffèrent par le moment et la manière dont elles sont évaluées.
La clause WHERE
ne peut être utilisée que dans le cadre de l'instruction
MATCH
et est évaluée dans le cadre du process
du modèle de graph
.
MATCH (n:User)
WHERE n.age > 25
RETURN n
L'instruction
FILTER
est évaluée après l'exécution des statements
précédents. Elle prend les résultats de l'instruction
précédant et applique une condition supplémentaire pour filtrer ces résultats.
MATCH (n:User)
FILTER n.age > 25
RETURN n
Exemple de graph
Les exemples suivants s'exécutent sur ce graph
:
Pour créer ce graph
, exécutez la requête suivante sur un graph
vide :
INSERT (rowlock:User {_id: 'U01', name: 'rowlock'}),
(brainy:User {_id: 'U02', name: 'Brainy'}),
(purplechalk:User {_id: 'U03', name: 'purplechalk'}),
(mochaeach:User {_id: 'U04', name: 'mochaeach'}),
(lionbower:User {_id: 'U05', name: 'lionbower'}),
(c01:Club {_id: 'C01', since: 2005}),
(c02:Club {_id: 'C02', since: 2005}),
(rowlock)-[:Follows {createdOn: '2024-1-5'}]->(brainy),
(mochaeach)-[:Follows {createdOn: '2024-2-10'}]->(brainy),
(brainy)-[:Follows {createdOn: '2024-2-1'}]->(purplechalk),
(lionbower)-[:Follows {createdOn: '2024-5-3'}]->(purplechalk),
(brainy)-[:Joins {memberNo: 1}]->(c01),
(lionbower)-[:Joins {memberNo: 2}]->(c01),
(mochaeach)-[:Joins {memberNo: 9}]->(c02)
Filtrage Simple
MATCH (c:Club)
FILTER c._id = "C01"
RETURN c
Résultat : c
_id | _uuid | schema | values |
---|---|---|---|
C01 | Sys-gen | Club | {since: 2005} |
Filtrage avec Produit Cartésien
Cette requête renvoie les utilisateurs qui suivent Brainy
et qui sont également membres de C02
:
MATCH (u1:User)-[:Follows]->(:User {name: "Brainy"})
MATCH (u2:User)-({_id: "C02"})
FILTER u1 = u2
RETURN u1
Résultat : u1
_id | _uuid | schema | values |
---|---|---|---|
U04 | Sys-gen | User | {name: "mochaeach"} |
Notez que le produit cartésien est formé entre u1
et u2
, qui sont produits par différentes instructions
MATCH
, avant que l'instruction
FILTER
ne soit appliquée pour effectuer le filtrage.