问题描述
假设具有以下数据库:
create (a:fooNode{name:'A'}),(b:fooNode{name:'B'}),(c:fooNode{name:'C'}),(d:fooNode{name:'D'}),(e:fooNode{name:'E'}),(p1:pNode{name:'p1'}),(p2:pNode{name:'p2'}),(a)-[e1:Edge{w:10}]->(p1),(b)-[e2:Edge{w:30}]->(p1),(c)-[e3:Edge{w:25}]->(p1),(d)-[e4:Edge{w:15}]->(p2),(e)-[e5:Edge{w:20}]->(p2),(source:fooNode{name:'Node 0'}),(source)-[:Edge]->(a),(source)-[:Edge]->(b),(source)-[:Edge]->(c),(source)-[:Edge]->(d),(source)-[:Edge]->(e)
此图片应阐明想法。
现在,我对每个“ pNode”的传入节点权重之和感兴趣。类似于: [ p1:65, p2:35] @H_502_10@
请注意, 我无法事先知道节点的名称 @H_502_10@,除了源节点在示例数据库中称为“节点0”。首先,我考虑过计算从“节点0”到任何“ pNode”的路径,但我不知道如何进一步。
解决方法
要获取所有pNodes
的权重之和:
MATCH ()-[e]->(n:pNode)
RETURN n.name,sum(e.w) as weight
以及特定的pNode
:
MATCH ()-[e]->(n:pNode)
WHERE n.name = "p1"
RETURN n.name,sum(e.w) as weight