Neo4j Cypher:如何将一个节点“转换”为布尔值?

时间:2014-07-24 19:38:11

标签: neo4j cypher

我已经OPTIONALLY MATCH了一个节点,我想根据是否找到匹配来确定一些值。例如。这个人为的简化例子:

OPTIONAL MATCH (node)
RETURN (CASE WHEN node THEN 'yes' ELSE 'false' END) AS result
不幸的是,Neo4j拒绝了以下错误消息:

Error: Type mismatch: expected Boolean but was Node (line 2, column 19)
"RETURN (CASE WHEN node THEN 'yes' ELSE 'false' END) AS result"
                   ^

http://console.neo4j.org/r/dnmlu7

我怎样才能做到这一点?我已尝试NOT(NOT(node)),但同样的问题。我已尝试过COUNT(node) > 0,但错误消息表明它是聚合的无效位置。 ?存在运算符不再存在于2.0+中。

我想我错过了一些明显的东西。谢谢您的帮助。 =)

1 个答案:

答案 0 :(得分:1)

你必须明确检查(没有Crockfordian'真实性'在这里!)。在节点匹配时返回true,在不匹配时返回false

MATCH (node)
RETURN node IS NOT NULL as result

并在CASE子句中使用

MATCH (node)
RETURN CASE WHEN node IS NULL THEN 'no' ELSE 'yes' END as result