当第一个运算符是列表时,IN运算符如何在NEO4J中工作

时间:2016-10-10 16:57:06

标签: neo4j cypher

我在NEO4J查询中使用这样的东西

return [1] in [3,25,6,2,4,1]

并返回true。

然而,当我执行类似

的事情时

return [1,2] in [3,25,6,2,4,1]

它返回false。

所以问题是如何指定在列表中使用IN运算符。我找不到任何关于此的规范,我不确定它是否在所有版本中都是一致的。

1 个答案:

答案 0 :(得分:1)

如果这确实有效,我很确定这是一个错误(虽然我还在寻找github问题)。您应该使用ALL来实现您正在寻找的行为。

RETURN ALL(x IN [1, 2] WHERE x IN [3, 25, 6, 2, 4, 1])

集合(neo4j列表)不是集合,它们可以有重复的条目,因此应该期望IN执行成员资格检查,而不是交集。设置操作目前已降级为apoc或其他外部程序。

如果您的第一个操作数 是一个列表,它将检查该整个列表是否与第二个操作数中的任何单个项匹配。因此,例如,[1, 2] IN [[1, 2], [3, 4]]将返回true,但[1, 2] IN [1, 2, 3, 4]将返回“false”。