从 Neo4j 中的 属性 数组中提取值

Extract value from property array in Neo4j

我有这样的东西:

MATCH (a)-[rel]->(b), x  
WHERE x.id = rel.allIds.contains(5)  
RETURN x

其中 rel.allIds 是一个数字数组。

如何用密码进行 contains 查询?

注意:我使用的是Neo4j 2.1.5版本

使用ANY检查每个ID是否相等。

MATCH (a)-[rel]->(b), x
WHERE has(x.id) and ANY(someid IN rel.allIds WHERE someid = x.id)
RETURN x

这会遍历 rel.allIds 中的所有项目,将每个项目绑定到 someid,然后检查它是否与 X 的 ID 相同。

更广泛地说,匹配项中额外的 x 匹配图表中的任何内容。我猜你有一个非常小的图,因为以这种方式匹配是非常低效的。您可能想要为该关系创建一个节点,然后 link 它到 x,因为这不是您希望经常 运行 的查询。