2017-07-05 6 views
0

私はNeo4Jが新しく、余分な外部処理なしで必要な出力を得るのに苦労しています。私はNeo4Jがそれを簡単に実行できることを確信しています。最良のアプローチに関するアドバイスをお願いします。DesiionツリーとエキスパートシステムのNeo4Jスタッククエリ

私は2種類のノードを持っています:{Weight:1}の特性を持つ関係を使って接続されているIngredientとFunctionです。私は成分のリストを照会しています。それぞれのコネクションの重みを掛け合わせて、それぞれの別個の関数につなげたいと思います。

ここで私が思いついたのです。

MATCH (q:Ingredient)-[r]->(p) WHERE q.RefNo IN [1,2,3] RETURN r,p 

これは出力次生成

{"weight":1}│{"Function":"X1"}              
{"weight":0.5}│{"Function":"X1"}                 
{"weight":0.7}│{"Function":"X2"} 
{"weight":0.4}│{"Function":"X3"} 
{"weight":0.5}│{"Function":"X4"} 

私はシングル/スタックのクエリで取得したいことは、この問題の可能な解決策に

X1:1.5, X2:1=0.7, X3:0.4, X4:0.5 

してくださいアドバイスがあります。ほとんどが

答えて

0

、あなたは自分の非集計列として重量に(この場合にはsum()を)集計関数を使用する必要がある、とFunctionプロパティ:

MATCH (q:Ingredient)-[r]->(p) 
WHERE q.RefNo IN [1,2,3] 
RETURN p.Function, sum(r.weight) as weight 

それともだけしたい場合単列結果:

MATCH (q:Ingredient)-[r]->(p) 
WHERE q.RefNo IN [1,2,3] 
WITH p, sum(r.weight) as weight 
RETURN collect(p {.Function, weight}) as functionWeights 
+0

ありがとうございます。これはちょうど*働く*。 –

+0

実際はありません。 2番目のオプションは - "集合関数の内部で代理関数を使うことはできません"。しかしそれはWITHと解決可能です。 –

+0

うわー、良いキャッチは、それに応じてクエリを更新しました。 – InverseFalcon

関連する問題