如何在密码查询中使用 UNWIND 后的条件

How to use condition after UNWIND in cypher query

我有这个密码查询

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

现在我想检查是否有 things[i] 等于 "first" 然后 return 它的索引,在本例中为 0,其中 "first" 有索引0. 但是不知道UNWIND后的条件怎么写

我试着在 return 之后添加条件,像这样:

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 

但是它不起作用,任何帮助将不胜感激。

此列表中只有一个 "first",但 "first" 可能不止一次出现在列表中。

我在这里共享 Cypher 以获取列表中任何字符串的 第一个索引(此处 "first")

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

.

EDIT:如果在列表中找不到字符串,则在 Cypher returns 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