cypher - 根据另一个数组过滤数组

时间:2018-01-03 18:34:15

标签: arrays neo4j cypher

假设我有一个节点有两个属性。每个属性都是一个数组。例如:

MATCH (n:myNode)
RETURN n.prop1, n.prop2

//this returns

prop1                prop2
[X, Y, X]            [A, B, C]

我如何在prop2中选择prop1 == X的值,得出这个结果:

[A, C]

我尝试了类似下面的内容,但显然我错过了一些东西:

MATCH (n:myNode)
RETURN FILTER(i in n.prop2 WHERE n.prop1='X')

感谢任何帮助

1 个答案:

答案 0 :(得分:2)

这应该有效:

MATCH (n:myNode)
RETURN REDUCE(s = [], i in RANGE(0, SIZE(n.prop1)-1) |
  CASE n.prop1[i] WHEN 'X' THEN s + n.prop2[i] ELSE s END) AS result;