neo4j密码中的三元运算符/默认值



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

场景是-

如果员工所在的城市是德里,则返回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。

不幸的是,它不支持开箱即用,但这里有一个破解方法,使用filter、head和collection文字。

这个想法是有一个两个元素的列表和一个过滤器表达式,该表达式对于"true分支"的第一个元素为true,对于列表中的第二个元素为true,c表示false分支的值。

请参阅此控制台示例: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))

我知道这是一个非常古老的问题,但由于谷歌把我带到了这里,我有了一个答案(Neo4J 3.5+中的Cypher):

MATCH (employee:Employee)
RETURN 
CASE employee.city WHEN "DELHI" THEN 5 ELSE 10 END AS val

最新更新