Neo4j嵌套条件语句

时间:2019-06-24 08:40:02

标签: neo4j

我对这项技术非常陌生。我正试图防止某个值低于0且高于1。并且如果不存在关系来设置该值

我已经尝试过了:

MATCH (t:Transmission{ identifier: '12345678' })-[r:EPISODE_OF]-(n:Series{ 
title: 'Buffy the Vampire Slayer' })
SET 
r.quality = CASE WHEN r.quality IS NULL THEN 0.3
ELSE CASE WHEN r.quality + 0.3 > 1 THEN 1 
ELSE CASE WHEN r.quality + 0.3 < 0 THEN 0 
ELSE r.quality = r.quality + 0.3 END
return t;

有什么想法吗?我收到一个我不明白的错误。

Neo.ClientError.Statement.SyntaxError: Invalid input 'r': expected 
whitespace, comment, '.', node labels, '[', "=~", IN, STARTS, ENDS, 
CONTAINS, IS, '^', '*', '/', '%', '+', '-', '=', '~', "<>", "!=", '<', 
'>', "<=", ">=", AND, XOR, OR or END (line 7, column 1 (offset: 284))
"return t"
^

1 个答案:

答案 0 :(得分:2)

无需重复CASE多次。这应该可以解决问题:

MATCH (t:Transmission{ identifier: '12345678' })-[r:EPISODE_OF]-(n:Series{ title: 'Buffy the Vampire Slayer' })
SET r.quality = CASE WHEN r.quality IS NULL THEN 0.3
  WHEN r.quality + 0.3 > 1 THEN 1 
  WHEN r.quality + 0.3 < 0 THEN 0 
  ELSE r.quality + 0.3 END
RETURN t