[英]Neo4j Cypher and nested WHERE condition
我正在尝试创建以下 Cypher 查询:
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
请帮助修复此查询。 谢谢!
由于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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.