Neo4J Cypher计算多个属性的平均值

Neo4J Cypher计算多个属性的平均值,neo4j,cypher,aggregation,Neo4j,Cypher,Aggregation,在Neo4J中,我有以下问题: 节点以树状或父/子样式结构排列。 在“叶子”或子节点上,每个节点都有一组数字属性 我需要一个密码查询来计算每个属性的平均值,并在父节点中的同名属性中对其进行排序 差不多 MATCH (p:Parent)-[]->(c:Child) SET p.attrib1 = avg(c.attrib1) SET p.attrib2 = avg(c.attrib2) 我会做的,但是 子节点中的属性数量应该是动态的,我不想在子节点出现附加属性名称时更改代码。只要属性是十

在Neo4J中,我有以下问题:

节点以树状或父/子样式结构排列。 在“叶子”或子节点上,每个节点都有一组数字属性

我需要一个密码查询来计算每个属性的平均值,并在父节点中的同名属性中对其进行排序

差不多

MATCH (p:Parent)-[]->(c:Child) 
SET p.attrib1 = avg(c.attrib1)
SET p.attrib2 = avg(c.attrib2)
我会做的,但是

子节点中的属性数量应该是动态的,我不想在子节点出现附加属性名称时更改代码。只要属性是十进制,代码就应该适应它。


有没有办法做到这一点?

您可以在的帮助下完成这一点。您几乎可以在本机密码中执行此操作,但无法动态指定要创建的属性的名称,但我们可以使用
apoc.create.setProperty
执行此操作:

MATCH (parent:Parent)<-[]-(child:Child) 
WITH parent, child, keys(child) AS props
UNWIND props AS prop
WITH parent, prop, avg(child[prop]) AS mean
CALL apoc.create.setProperty(parent, prop, mean) YIELD node
RETURN *

MATCH(parent:parent)所有
Child
节点是否共享同一组数值属性?还有,是否有任何不想平均的
子属性
属性?有些属性可能不存在于每个节点中,但没有必要明确排除任何属性进行平均。很酷,我到目前为止还没有使用APOC,但今天晚些时候我将尝试使用它。