在 Neo4J 中使用条件过滤列表

FIlter the list with a condition in Neo4J

假设我有一个 table 这种

| Type                    | Name           | Status   |
| --------                | -------------- | -------- |
| ["Thriller" , "Horror"] | Conjuring      | Released | 
| ["Action" , "Thriller"] | Evil Dead      | Released |
| ["Drama" , "Thriller"]  |   XYZ          | Released |

我想检索不是 Thriller 的行。换句话说,我想做类似 Type.filter(item => item != "Thriller") 我如何在 Neo4J 中执行此操作?

预期结果

| Type     | Name           | 
| -------- | -------------- |
| "Horror" | Conjuring      |     
| "Action" | Evil Dead      |      
| "Drama"  |   XYZ          |

Cypher 有一个列表理解语法:

[x in type WHERE x <> "Thriller" | x]

在文档中查找更多信息:https://neo4j.com/docs/cypher-manual/current/syntax/lists/#cypher-list-comprehension

如果你想使用 APOC,调用函数:apoc.coll.removeAll

语法:apoc.coll.removeAll([first], [second]) - returns“first”列表删除了“second”列表的所有元素

Ref: https://neo4j.com/labs/apoc/4.1/overview/apoc.coll/apoc.coll.removeAll/

 RETURN apoc.coll.removeAll(Type, "Thriller") as Type, Name 

我可以使用这段密码查询来修复此功能

RETURN DISTINCT [x in Type WHERE x <> "Thriller"][0] as Type