1

我需要实现一些三元运算符,它可以帮助我从密码查询本身返回一些默认值。

情景是——

如果员工所在的城市是德里,则返回 5,否则返回 10

类似于三元运算符的东西。

start employee = node(5)
return employee.city == 'DELHI' ? 5 : 10 as val;

我尝试过类似的事情

start employee = node(5)
return coalesce (employee.city == 'DELHI', 5)

但没有运气。

有没有办法在 Neo4j 中实现这样的场景,无论是 Cypher 还是 Traversal。

4

2 回答 2

3

不幸的是,它不支持开箱即用,但这里有一个 hack,使用过滤器、头部和集合文字。

这个想法是有一个双元素列表和一个过滤器表达式,对于您的“真分支”的第一个元素变为真,或者对于列表中的第二个元素变为真,它代表您的假分支的值。

请参阅此控制台示例:http ://console.neo4j.org/r/6tig7g

start n=node(5) return head(filter( a in [5,10] : n.city = 'DELHI' OR a = 10))

所以一般来说:

head(filter( a in [true-result,false-result] : CONDITION OR a = false-result))
于 2012-08-02T08:32:39.597 回答
0

我知道这是一个非常古老的问题,但自从谷歌让我来到这里并且我有了一个答案(Cypher in Neo4J 3.5+):

MATCH (employee:Employee)
RETURN 
CASE employee.city WHEN "DELHI" THEN 5 ELSE 10 END AS val
于 2021-09-07T13:14:53.617 回答