2015-04-02 172 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