Neo4j вложенное условное утверждение - PullRequest
1 голос
/ 24 июня 2019

Я очень новичок в этой технологии.Я пытаюсь предотвратить, чтобы значение опустилось ниже 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 Ответ

2 голосов
/ 24 июня 2019

Нет необходимости повторять 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...