私は数日前にこれに非常に似た何かをしようとしましたが失敗しました。問題は、コレクションの合計を取得できず、集計の合計のみを取得できるという事実にあります。
参照:
https ://groups.google.com/d/topic/neo4j/_MqwGp1a1Oo/discussion
彼らがCypherでこれにいくつかの機能を追加することを願っていますが、専門家であるMichael Hungerの助けを借りても、それを機能させることができませんでした。
更新私は実際に今日サイファーコードを突いて、まさにこれを行う式を作成しました。1.9で受け入れられるかどうかはわかりませんが、まもなく何らかの形でコミュニティ版に登場する可能性があります。
UPDATE 2それらは私のプルリクエストでreduce
1.9-SNAPSHOTにマージされました、以下の構文を更新します。
それは基本的にあなたが求めていることを正確に行います-私のデータの少し古いバージョンはここにあります:http:
//console.neo4j.org/r/2rvznu
そして、これがサイファーです(注、現在1.9-SNAPSHOTが必要です):
START n=node(18)
MATCH p=n-[r*]->m
WHERE not(m-->())
WITH extract(x in r: x.score) as scores, length(p) as len
RETURN scores, reduce(res=0, x in scores: res + x) as totalscore, len
ORDER BY totalscore desc;
与える:
+------------------------------------------+
| scores | totalscore | len |
+------------------------------------------+
| [0.9,0.9,3.7] | 5.5 | 3 |
| [0.8,0.79] | 1.59 | 2 |
| [0.4,0.75] | 1.15 | 2 |
| [0.4,0.45] | 0.8500000000000001 | 2 |
+------------------------------------------+