我使用的是Neo4j 1.9.2,我需要优化以下查询:
START n=node:edge_iter(id='5'), r=relationship(*)
MATCH (m)-[:NEXT]->(n)
WHERE ID(r) = m.id
RETURN r
由于relationship(*)
,这是致命的慢。
所以我创建了这个不起作用的查询:
START n=node:edge_iter(id='5')
MATCH (m)-[:NEXT]->(n)
WITH m.id as id
START r=relationship(id)
RETURN r
错误讯息:
预期的关系ID,或*
“START r = relationship(id)”
当我使用r=relationship({id})
时出现另一个错误,因为{id}
应该是参数。
我的问题很简单:如何在不进行第二次查询的情况下使用m.id
获取相应的行?
一些上下文:我尝试在Neo4j中建模边缘流,这是一组按出现时间排序的连续边。
答案 0 :(得分:0)
我的理解是你试图获得“NEXT”类型的所有关系以及与起始节点相同的标识符,如果这是真的,请尝试以下查询,
START n=node:edge_iter(id='5')
MATCH (m)-[r:NEXT]->(n)
Where ID(r) = ID(n)
Return r
答案 1 :(得分:0)
来自Neo4j的工作人员:
还没有,在2.0中它应该从:where id(r)= id
进行直接查找