Neo4j Cypher和嵌套的WHERE条件

时间:2017-10-19 07:09:55

标签: neo4j cypher

我正在尝试创建以下Cypher查询:

.icons a.fa-twitter { }

我需要将当前未分配的所有权限(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})进行过滤

目前,此查询失败,出现以下Cypher错误:

p.minUserReputation <= {minUserReputation}

请帮助修复此查询。谢谢!

1 个答案:

答案 0 :(得分: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