因此在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,但是我真的不确定如何构造此查询。
如果有人知道该怎么做,可以帮我吗?
答案 0 :(得分:2)
根据对我的问题的评论,ANY谓词功能解决了此问题。
请参阅下面的MATCH查询:
MATCH (n)
WHERE ANY (color IN n.stringListProp WHERE color IN ["red", "pink", "cyan"])
RETURN n
此查询将检查具有stringListProp属性的任何节点是否在查询列表中具有任何项目。