从Neo4j cypher查询返回布尔值

时间:2015-09-24 12:13:48

标签: java neo4j cypher spring-data-neo4j

我想检查节点是否存在使用其名称(而不是其ID)。 Cypher查询看起来像:

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

但是,使用neo4j shell / web控制台,返回的结果是String类型。 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)

有人为此遇到任何解决方法

2 个答案:

答案 0 :(得分:5)

Supamiu提供的答案不会令人遗憾,您需要通过返回计数表达式来解决这个问题:

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

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

上找到更多信息