Cypher return 可以增加数字链吗?

Can Cypher return a increment chain of numbers?

例如,我可以有这样一个生成数字增量的命令吗?

MATCH (n) 
RETURN n, number_increment

node A   1
node B   2
node C   3
node D   4

我想将 id 分配给一组节点(不是 id(n) 节点),我需要一个数量递增的链。这在 Cypher 中可行吗?还是我需要使用其他语言?

您似乎想要行号之类的东西。在密码中没有直接的方法,但是有许多不同的解决方案。一种方法是使用 apoc.coll.zip 函数并将结果处理到集合中,

MATCH (n) 
WITH collect(n) as nodes
WITH apoc.coll.zip(nodes, range(0, size(nodes))) as pairs
UNWIND pairs as pair 
RETURN pair[0] as n, pair[1] as rowNumber

(请注意,上面的查询会选择商店中的所有节点,因此如果您有大量节点,可能需要一段时间)

这会起作用。

MATCH(n)
WITH RANGE(1, COUNT(n)) AS indexes, COLLECT(n) AS nodes
FOREACH(i IN indexes | SET (nodes[i-1]).myID = i)
WITH nodes UNWIND nodes AS node
RETURN node