【问题标题】:multiple OPTIONAL MATCH in Neo4j 2.2.3 errorsNeo4j 2.2.3 中的多个 OPTIONAL MATCH 错误
【发布时间】:2015-11-04 01:00:56
【问题描述】:

多个可选匹配在 Neo4j 2.2.3 中返回以下错误。我正在使用 Cypher 2.2 解析器。 **

“org.neo4j.rest.graphdb.RestResultException: null at NullPointerException”。相同的查询在 Neo4j 2.1.7 中完美运行。

**

 match (user:user)-[k:SUBSCRIBED]->(package) 
 where package.startDate < 1439268888365 and package.endDate > 1439268888365 
 with package,user optional match (package)-[j:HAS]->(products) 
 with package,j,products,user optional match (package)-[j:HAS]-(otherpackages) 
 return distinct package,products,user,otherpackages

有什么办法可以解决这个问题吗?

【问题讨论】:

    标签: neo4j match cypher optional


    【解决方案1】:

    根据Neo4j documentation optional match can return null,要知道null返回的位置,只需尝试查询的每个段,将每个“with”替换为return。

    您还可以使用 Case expression 管理 null 返回并将其替换为默认值(如 0)。

    你也应该考虑升级到 2.2.4,这是一个重要的更新,它可能会通过应用它来解决你的问题。

    【讨论】:

    • 经过几次尝试后,我意识到我正在使用 Cypher 解析器 2.2,并且看起来它不支持多个 OPTIONAL MATCH。当我切换到 2.1 解析器时,它通过了。
    【解决方案2】:

    试试这个,

    match (user:user)-[k:SUBSCRIBED]->(package:package) 
    where package.startDate < 1439268888365 and package.endDate > 1439268888365 
    with package,user 
    optional match (package)-[j:HAS]->(products:products) with package,j,products,user 
    optional match (package)-[j:HAS]-(otherpackages) with package,j,products,user,otherpackages
    return 
    {
    package:[{package:package}],
    products:[{products:products}],
    user:[{user:user}],
    otherpackages:[{otherpackages:otherpackages}]
    }

    如果你想要不同的手段,请使用

    收集(包装)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-06
      • 1970-01-01
      • 2015-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多