2017-10-19 8 views
1

Je suis en train de créer la requête suivante Cypher:Neo4j Cypher et imbriqué condition WHERE

MATCH (p:Permission) 
WHERE NOT ((p)<-[:HAS|:CONTAINS*1..2]-(u:User) WHERE u.id = {userId}) AND p.minUserReputation <= {minUserReputation} 
RETURN p 

Je dois retourner toutes les autorisations qui sont non classés (NOT ((p)<-[:HAS|:CONTAINS*1..2]-(u:User)) à l'utilisateur (avec u.id = {userId}) et filtrée en valeur min de réputation (p.minUserReputation <= {minUserReputation})

Actuellement, cette requête échoue avec l'erreur suivante Cypher:

Error executing Cypher; Code: Neo.ClientError.Statement.SyntaxError; Description: Variable `u` not defined 

S'il vous plaît aidez à résoudre cette requête. Merci!

Répondre

1

Depuis WHERE <pattern> et WHERE EXISTS(<pattern>) ne c'est permet pas des clauses supplémentaires où sur le modèle, mieux correspondre à l'utilisateur d'abord, vous permettant d'utiliser votre clause WHERE, puis inclure la variable pour cet utilisateur dans votre prédicat:

MATCH (u:User) 
WHERE u.id = {userId} 
MATCH (p:Permission) 
WHERE p.minUserReputation <= {minUserReputation} 
AND NOT (p)<-[:HAS|:CONTAINS*1..2]-(u) 
RETURN p