Neo4j cypher:内部结果在嵌套查询中用作ID

时间:2013-08-23 10:44:44

标签: optimization neo4j cypher

我使用的是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中建模边缘流,这是一组按出现时间排序的连续边。

2 个答案:

答案 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

进行直接查找