2017-09-04 8 views
1

これが可能かどうかを知りたいと思います。私は2つの他のノードを介して2つのエンティティ間の関係を示す良いレポートを生成するクエリを持っています。複数のパスがあります。私は今、これらの2つのノードの間に直接関係を作り、その間のノードのデータに基づいてパスと合計の数を数えたいと思う。レポートのクエリは以下のとおりです。Cypherでクエリを使用してプロパティとの関係を作成する

match (bo:BuyerAgency)<-[:IS_FOR_BO]-(sol:Solicitation)-[:SELECTED]->(prop:Proposal)<-[:OWNS_BID]-(so:VendorOrg) 
where sol.currStatus='Awarded' 
return bo.AgencyName, count(sol.Number) as awards, so.orgName, sum(prop.finalPrice) as awardVolume; 

私がしたいことは、以下のように動作しません。

match (bo:BuyerAgency)<-[:IS_FOR_BO]-(sol:Solicitation)-[:SELECTED]->(prop:Proposal)<-[:OWNS_BID]-(so:VendorOrg) 
where sol.currStatus='Awarded' 
create (bo)-[:HAS_AWARDED{awardCount: count(sol.Number), awardVolume: sum(prop.finalPrice)}]->(so); 

私は関係のプロパティを削除した場合、それは動作しますが、多くのプログラミングにせずにプロパティを追加します。

私はNeo4j 3.2の最新バージョンを使用しています。

おかげ

答えて

1

ここでの問題は、無効なコンテキストでcount()sum()機能を使用しようとしているです。以下のクエリは動作するはず:

match (bo:BuyerAgency)<-[:IS_FOR_BO]-(sol:Solicitation)-[:SELECTED]->(prop:Proposal)<-[:OWNS_BID]-(so:VendorOrg) 
where sol.currStatus='Awarded' 
with bo, so, count(sol.Number) as count_sol, sum(prop.finalPrice) as sum_finalPrice 
create (bo)-[:HAS_AWARDED{awardCount: count_sol, awardVolume: sum_finalPrice}]->(so); 

このクエリは、次のコンテキストにboso凝集機能count(sol.Number)sum(prop.finalPrice)の結果を渡すWITHを使用します。その後、これらの値を使用してbosoの間に新しい関係が作成されます。

+0

ありがとうございました。私は推測するサブクエリを学ぶ必要があります。 –

+0

こんにちは@ArthurJohnson、あなたは大歓迎です!この回答があなたの質問を解決した場合、チェックマークをクリックして[受諾](https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)を検討してください。これは、あなたが解決策を見つけ出し、回答者とあなた自身の両方に評判を与えていることを広範なコミュニティに示します。これを行う義務はありません。ありがとう! :) –

関連する問題