0

我使用 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,或 *

“开始 r = 关系(id)”

使用时出现另一个错误,r=relationship({id})因为{id}应该是一个参数。

我的问题很简单:如何m.id在不进行第二次查询的情况下获取相应的行?

一点上下文:我尝试在 Neo4j 中建模一个边缘流,它是一组按出现时间排序的连续边缘。

4

2 回答 2

0

我的理解是您正在尝试获取“NEXT”类型的所有关系,并且标识符与起始节点相同,如果是这样,请尝试以下查询,

START n=node:edge_iter(id='5') 
MATCH (m)-[r:NEXT]->(n)
Where ID(r) = ID(n)
Return r
于 2013-08-23T12:39:13.043 回答
0

来自 Neo4j 工作人员:

还没有,在 2.0 中它应该从以下位置进行直接查找: where id(r) = id

于 2013-08-23T13:13:54.010 回答