2017-10-19 153 views
1

我試圖創建以下的Cypher查詢:Neo4j的Cypher和嵌套的WHERE條件

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

我需要在所有當前未分配的權限(NOT ((p)<-[:HAS|:CONTAINS*1..2]-(u:User))的返回到用戶(與u.id = {userId})和通過分信譽值濾波(p.minUserReputation <= {minUserReputation}

目前,此查詢失敗,出現以下的Cypher錯誤:

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

請幫助解決此查詢。謝謝!

回答

1

由於WHERE <pattern>WHERE EXISTS(<pattern>)不允許額外的WHERE上的圖案條款,最好先匹配的用戶,讓您使用您的WHERE子句,則包括該用戶在您的謂詞變量:

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