Как использовать условие после UNWIND в запросе шифра - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть этот запрос шифра

WITH ["first", "second"] AS things, -1 AS index
UNWIND range(0,size(things)-1) AS i  
Return things[i]

Теперь я хочу проверить, есть ли things[i], где он равен «first», затем вернуть его индекс, в данном случае 0, где «first» имеетиндекс 0. Но я понятия не имею, как написать условие после UNWIND.

Я пытался добавить условие после возврата, как это:

WITH ["first", "second"] AS things, -1 AS index
UNWIND range(0,size(things)-1) AS i  
Return CASE WHEN things[i] = "first" THEN i AS index 

Но это не работает, любая помощь будет оценена спасибо.

1 Ответ

0 голосов
/ 25 февраля 2019

В этом списке есть только один «первый» , но в списке может быть больше одного «первого».

Я делюсь здесь Cypher, чтобы получить первый индекс любой строки в списке (здесь «первый») .

WITH ["first", "second"] AS things, -1 AS index
RETURN [x IN range(0,size(things)-1) WHERE things[x] = "second"][0] AS index

.

РЕДАКТИРОВАТЬ : выше Cypher возвращает null , если строка не найдена в списке.Если вы хотите -1 или любое другое значение в случае, если строка не найдена, используйте следующий запрос:

WITH ["first", "second"] AS things, -1 AS index
WITH [x IN range(0,size(things)-1) WHERE things[x] = "first"][0] AS index
RETURN  CASE WHEN index IS NOT NULL THEN index ELSE -1 END AS index
...