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
例如,我可以有这样一个生成数字增量的命令吗?
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