【问题标题】:Neo4j Cypher and nested WHERE conditionNeo4j Cypher 和嵌套的 WHERE 条件
【发布时间】:2017-10-19 07:09:54
【问题描述】:

我正在尝试创建以下 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)&lt;-[:HAS|:CONTAINS*1..2]-(u:User))返回给用户(使用u.id = {userId})并按最低信誉值过滤(p.minUserReputation &lt;= {minUserReputation}

目前,此查询因以下 Cypher 错误而失败:

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

请帮助解决此查询。谢谢!

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    由于 WHERE &lt;pattern&gt;WHERE EXISTS(&lt;pattern&gt;) 不允许在模式上使用额外的 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-05
      • 2021-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多