说我已经匹配了一系列关系:
MATCH a-[r:BELONGS_TO]->b
如何迭代每个关系并为其分配索引?在伪代码中:
for i in range(0, # of r's)
r.order = i
答案 0 :(得分:9)
这应该有效:
MATCH (a)-[r:BELONGS_TO]->(b)
WITH collect(r) as rels
WITH rels, range(0, size(rels)) AS is
UNWIND is AS i
WITH rels[i] as rel, i
SET rel.order = i
答案 1 :(得分:2)
你可以稍微破解它:
MATCH (a)-[r:BELONGS_TO]->(b)
WITH collect(r) as relationships
UNWIND range(0, size(relationships)-1) as x
RETURN relationships[x]
答案 2 :(得分:0)
根据您的要求,您可以使用neo4j DB自动分配给每个关系(和节点)的“内部”ID。虽然每个内部ID都是唯一的,但在删除关系(或节点)后,其内部ID可以由新关系(或节点)重用。随着时间的推移,关系(和节点)的活动内部ID集合可能不再具有0原点,并且可能没有连续的整数值。
如果内部ID足以满足您的需求,则无需添加自己的id
或index
属性。
您可以使用ID()
功能在需要时获取内部ID。例如,这是您获取每个BELONGS_TO
关系的内部ID的方式:
MATCH ()-[r:BELONGS_TO]->()
RETURN ID(r);