neo4j

时间:2018-10-09 16:53:01

标签: neo4j cypher

我想查询在字符串数组属性中具有特定值的节点。例如,我的节点可能有2个属性,名称(字符串)和别名(字符串数组)。我已经使用CREATE INDEX ON :F2(name)之类的方法在两个属性上创建了一个索引。 我可以使用像这样的密码查询name属性,结果是立即的:

MATCH (p:F2) WHERE p.name = 'john' RETURN p;

我可以使用cypher这样查询别名属性,并且得到预期的结果,但响应速度很慢:

MATCH (p:F2) WHERE ANY(item IN p.aliases WHERE item = 'big john') RETURN p;

这似乎是查询不是最佳查询或未使用索引。 有人可以建议如何正确执行此操作。我对neo4j和cyper很新:-(

1 个答案:

答案 0 :(得分:1)

您可以重构图形以使别名成为节点。因此,任何F2节点都具有零个或多个别名。

CREATE INDEX ON :Alias(name)

然后您可以使用类似这样的查询...

MATCH (p:F2)-[:HAS_ALIAS]->(:Alias {name: 'big john'})
RETURN p