使用与该节点之间的关系数更新我的所有节点属性

时间:2019-01-05 15:19:44

标签: neo4j count cypher relationship store

所以我只想到以下内容:

MATCH(a:Entity)<-(x:Entity)SET a.links_to = count(x) 匹配(a:Entity)->(x:Entity)SET a.links_from = count(x)

我该如何在Cypher中正确编写呢? 我怎么可能通过使用Apoc快速且最好是并行的方式进行此操作?

3 个答案:

答案 0 :(得分:0)

这是一项昂贵的操作,但是如果您要执行此操作,请使用以下密码查询:

match (a)-[]->(b) 
with a, b, 
CASE WHEN exists(a.outgoingEdges) THEN a.outgoingEdges+1 else 1 END as outgoingEdges,
CASE WHEN exists(b.incomingEdges) THEN b.incomingEdges+1 else 1 END as incomingEdges
SET
 a.outgoingEdges= outgoingEdges,
 b.incomingEdges = incomingEdges

答案 1 :(得分:0)

这可以非常有效地完成。

Match (e:Entity)
Set e.links_to = size((e)<--()),
      e.links_from = size((e)-->())

如果您想使用APOC加速并并行运行

Call apoc.periodic.iterate(
' match (e:Entity) return e',
' set e.links_to = size((e)<--()),
      e.links_from = size((e)-->())',
{batchSize:10000,parallel: true})

答案 2 :(得分:0)

好评。 Apoc解决方案效果特别好。非常感谢!