1

我正在使用 neo4j,我有两个属性的节点:名称和 id。我有一个关于 id 的索引。我与属性“CALL”有关系:“by_test”。此属性可以采用不同的值(任何节点的 id)。

两个节点可以有多个具有不同 by_test 属性值的 CALL 关系。

因此,假设我有 1..N 个由相同 CALL.by_test 属性值链接的节点。

节点 1 -> 节点 2 -> 节点 3 -> .. -> 节点 N

  • 我怎样才能得到所有这些节点?

    1. 我需要在关系上放置索引吗?

    2. 我必须创建动态关系吗?而不是 CALL.by_test=value,使用 value 有关系。

谢谢!

4

1 回答 1

1

使用 Cypher,您可以像这样查询该列表:

START n=node:node_auto_index(name="one") 
MATCH p=(n)-[r:CALL*1..]->(m)
WHERE ALL(x in r WHERE x.by_test = 3)
RETURN n,m

MATCH您将术语绑定rCALL关系中,然后在WHERE子句中使用它来检查by_test每个关系的属性。

正如 Michael Hunger 所指出的,r是关系的集合,因此WHERE需要使用ALL来检查每个关系。

于 2012-07-28T13:54:14.073 回答