2015-04-02 87 views
2

enter image description hereNeo4j聚合和总和

我很抱歉,如果我的问题是微不足道的,我是一个NOOB在neo4j。

我试图写一个暗号查询,将发现所有倒序紫色节点从的值总和(mass_of *含)为打算从紫色到红色的所有路径]

例如: 在图片它会是[(mass_of * contains)]所有红色路径,然后求和所有红色路径。

我开始这个查询,但我不知道该从哪里去。

MATCH p0=(p:Purple)-[m:mass_of]->(g:Green)-[c:contains]->(r:red {name: "something"}) 
WITH m, c.amount * m.amount as total_per_path 
WITH total_per_path, reduce(total=0, node IN collect(m)| total + total_per_path) AS total_something 
RETURN total_something as TOTAL, total_per_path as PER_TOTAL_PATH 

...

感谢您的帮助。

+0

所以看起来你的查询主要是在那里,但我不明白你为什么要在'm'的基础上做'collect' - 这一点令人困惑,因为'm'是一种关系,但是然后你说'collect(m)'中的节点没有意义,然后在表达式之后的表达式中没有使用'node'。因此,似乎'total_per_path'主要是你想要的....为什么不总和所有'total_per_path'变量? – FrobberOfBits 2015-04-02 01:08:43

+0

我在'total_per_path'上做了总和,但总和了所有的桔子和所有的红色路径。我想要得到所有红色路径的总和以及所有橙色路径的总和。我试图用'm'来收集,因为它代表了一条路径(但是这并不是非常合适) – user618589 2015-04-02 01:25:17

回答

1

这应该这样做

MATCH (p:Purple)-[m:mass_of]->(g:Green)-[c:contains]->(r:red {name: "something"}) 
RETURN p, SUM(c.amount * m.amount) AS total 
ORDER BY total DESC 

您也可以收集M,G或C的回报,如果你需要的节点/关系。

+0

感谢那些作品。 – user618589 2015-04-02 13:56:01