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

问题描述 投票:0回答:1

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

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')

任何帮助表示赞赏

arrays neo4j cypher
1个回答
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;
© www.soinside.com 2019 - 2024. All rights reserved.