Neo4j:如何对两个列表进行顺序不敏感的相等测试?

m528fe3b  于 2023-04-06  发布在  其他
关注(0)|答案(1)|浏览(127)

假设我有一个节点,它具有这些属性:

name: abc
colors: [red,green,blue]

其中colors属性是一个列表,它可以包含任意数量的元素和任意顺序。
我想创建一个查询,它将查找具有colors属性的节点,该属性包含另一个列表的所有元素,例如[red,green,yellow,blue]
我该如何编写这个查询?
我知道你可以做类似MATCH (n:Node) WHERE n.colors = [red,green,yellow,blue]的事情,但这只会匹配那些以确切顺序拥有这些颜色列表的节点。我想要一个检查节点的颜色属性是否包含指定颜色的查询,以任何顺序。
就像

myColors = [red,green,yellow,blue]
match = true
for each color in node.colors:
  if color not in myColors:
    // DO NOT MATCH
    match = false

但作为一个有效的密码查询

3bygqnnd

3bygqnnd1#

你可以使用ALL predicate 函数对两个列表进行顺序不敏感的相等测试:

MATCH (n:Node)
WHERE ALL(c IN n.colors WHERE c IN [red,green,yellow,blue])
...

相关问题