【问题标题】:Return Boolean value from Neo4j cypher query从 Neo4j 密码查询返回布尔值
【发布时间】:2015-12-22 00:55:07
【问题描述】:

我想用它的名字(而不是它的 ID)来检查一个节点是否存在。 Cypher 查询如下所示:

MATCH (c:Jaguar{name:"JLR 2.5Ltr"})-[:REPRESENTED_BY]->(v) RETURN c IS NOT NULL

但是,使用 neo4j shell/web 控制台,返回的结果是字符串类型。在 spring-data-neo4j 中同样失败并出现错误:

Null return value from advice does not match primitive return type for: public abstract boolean xxx.yyy.repository.SomeRepository.checkIfDatasetExists(java.lang.String)

有人遇到过任何解决此问题的方法

【问题讨论】:

    标签: java neo4j cypher spring-data-neo4j


    【解决方案1】:

    您应该使用 CASE 来检查您的节点是否为空,并返回您需要的值:

    MATCH (c:Jaguar{name:"JLR 2.5Ltr"})-[:REPRESENTED_BY]->(v)
    RETURN CASE WHEN c IS NULL THEN false ELSE true END as c
    

    更多信息请访问Neo4j's Documentation

    【讨论】:

    • 感谢您的询问。我试过测试它,它工作正常。当我在节点不存在的情况下尝试相同的情况时,它返回 (no changes, no records) 而不是 false
    【解决方案2】:

    不幸的是,Supamiu 提供的答案不起作用,您需要通过返回计数表达式来破解:

    MATCH (c:Jaguar{name:"JLR 2.5Ltr"})-[:REPRESENTED_BY]->(v) 
    RETURN count(c) > 0 as c
    

    【讨论】:

      猜你喜欢
      • 2011-07-02
      • 1970-01-01
      • 2012-12-29
      • 2013-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多