首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Neo4j密码查询返回布尔值

从Neo4j密码查询返回布尔值
EN

Stack Overflow用户
提问于 2015-09-24 20:13:48
回答 3查看 5K关注 0票数 5

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

代码语言:javascript
运行
复制
MATCH (c:Jaguar{name:"JLR 2.5Ltr"})-[:REPRESENTED_BY]->(v) RETURN c IS NOT NULL

但是,使用neo4j外壳/web控制台时,返回的结果是字符串类型。在spring-data-ne4j中同样也会失败,并显示错误:

代码语言:javascript
运行
复制
Null return value from advice does not match primitive return type for: public abstract boolean xxx.yyy.repository.SomeRepository.checkIfDatasetExists(java.lang.String)

有没有人遇到过解决这个问题的办法

EN

回答 3

Stack Overflow用户

发布于 2015-09-24 21:14:25

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

代码语言:javascript
运行
复制
MATCH (c:Jaguar{name:"JLR 2.5Ltr"})-[:REPRESENTED_BY]->(v) 
RETURN count(c) > 0 as c
票数 8
EN

Stack Overflow用户

发布于 2015-09-24 20:39:55

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

代码语言:javascript
运行
复制
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

票数 3
EN

Stack Overflow用户

发布于 2022-01-14 09:49:37

现在最新版本支持,可以使用谓词函数:

exists()

代码语言:javascript
运行
复制
MATCH   (c:Jaguar{name:"JLR 2.5Ltr"})
RETURN  exists((c)-[:REPRESENTED_BY]->(v)) // returns boolean

Docs

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32761039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档