从Neo4j密码查询返回布尔值

Thi*_*ail 5 java neo4j cypher spring-data-neo4j

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

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

但是,使用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)
Run Code Online (Sandbox Code Playgroud)

是否有人为此进行任何工作

Chr*_*sen 5

不幸的是,Supamiu提供的答案无法正常工作,您需要通过返回count表达式来破解它:

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


Sup*_*miu 3

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

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

更多信息可以在Neo4j 的文档中找到