Neo4j比赛名单

时间:2020-04-09 12:49:33

标签: neo4j cypher

因此在Neo4j中,如果您有多个节点,并且它们具有1值的属性,如下所示:

n.stringProp = "something"

然后,您可以使用

之类的MATCH查询来获取符合查询列表中任何属性的各种节点。
MATCH (n) 
WHERE n.stringProp IN ["something", "somethingElse", "etc"]
RETURN n

但是,如果您具有具有列表属性的节点,如下所示:

n.stringListProp = ["red", "purple", "green"]

并且您想要获得在其列表属性的查询列表中具有任何1个或多个标签的节点,那么您不能简单地执行如下查询:

MATCH (n)
WHERE n.stringListProp IN ["red"]
RETURN n

而且您也不能使用CONTAINS,因为这是用于子字符串的。所以你不能做:

MATCH (n)
WHERE n.stringListProp CONTAINS "red"
RETURN n

并且您不能使用FOREACH遍历它们,因为FOREACH仅用于CREATE,MERGE或DELETE操作。因此,我认为您必须对这种类型的MATCH查询使用UNWIND,但是我真的不确定如何构造此查询。

如果有人知道该怎么做,可以帮我吗?

1 个答案:

答案 0 :(得分:2)

根据对我的问题的评论,ANY谓词功能解决了此问题。

请参阅下面的MATCH查询:

MATCH (n)
WHERE ANY (color IN n.stringListProp WHERE color IN ["red", "pink", "cyan"])
RETURN n

此查询将检查具有stringListProp属性的任何节点是否在查询列表中具有任何项目。

相关问题