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

时间:2015-05-12 12:14:20

标签: neo4j cypher

我有这样的事情:

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

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

如何在cypher中创建包含查询?

注意:我正在使用Neo4j 2.1.5版本

1 个答案:

答案 0 :(得分:0)

使用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与图表中的任何内容相匹配。我猜你有一个非常小的图表,因为以这种方式匹配是非常低效的。您可能希望为该关系创建一个节点,然后将其链接到x,因为这不是您想要经常运行的查询。