我的问题与这个问题略有不同:Neo4j - calculate & set node property based on relation property。我需要做的是通过计算具有相同“社区”(这是另一个节点属性)的节点的数量来设置节点属性社区大小"CommSize“。我尝试过以下代码,但它为每个"CommSize“设置了'1‘,并且我知道我的社区有成百上千的节点:
MATCH (i)
WITH i, i.community as comm, count(i) as CommCount
SET i.CommSize = CommCount;如何使用每个社区中的节点计数来设置社区大小属性?谢谢。
发布于 2019-08-28 06:42:10
当您聚合时,非聚合变量将成为分组键。因此,在您的示例中,每行i有一个节点,以及该单个i节点的计数以及该单个节点的社区值。
要在所有节点上进行聚合,您需要消除或聚合i,以便它在聚合时不会保留为分组键。
您可以尝试如下所示:
MATCH (i)
WITH i.community as comm, count(i) as CommCount, collect(i) as nodes
FOREACH (i IN nodes |
SET i.CommSize = CommCount);如果您有许多节点要处理(可能大于50k ),那么您可能需要考虑批处理您的更新,例如使用APOC过程中的apoc.periodic.iterate()。
https://stackoverflow.com/questions/57682879
复制相似问题