我需要实现一些三元运算符,它可以帮助我从密码查询本身返回一些默认值。
场景是-
如果员工所在的城市是德里,则返回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