我想使用节点的名称(而不是ID)来检查节点是否存在。Cypher查询如下所示:
MATCH (c:Jaguar{name:"JLR 2.5Ltr"})-[:REPRESENTED_BY]->(v) RETURN c IS NOT NULL
但是,使用neo4j外壳/web控制台时,返回的结果是字符串类型。在spring-data-ne4j中同样也会失败,并显示错误:
Null return value from advice does not match primitive return type for: public abstract boolean xxx.yyy.repository.SomeRepository.checkIfDatasetExists(java.lang.String)
有没有人遇到过解决这个问题的办法
发布于 2015-09-24 21:14:25
不幸的是,Supamiu提供的答案将不起作用,您需要通过返回计数表达式来破解此问题:
MATCH (c:Jaguar{name:"JLR 2.5Ltr"})-[:REPRESENTED_BY]->(v)
RETURN count(c) > 0 as c
发布于 2015-09-24 20:39:55
您应该使用CASE来检查您的节点是否为null,并返回所需的值:
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。
发布于 2022-01-14 09:49:37
现在最新版本支持,可以使用谓词函数:
exists()
MATCH (c:Jaguar{name:"JLR 2.5Ltr"})
RETURN exists((c)-[:REPRESENTED_BY]->(v)) // returns boolean
https://stackoverflow.com/questions/32761039
复制相似问题