2017-02-08 15 views
2

私は次のCypherクエリー/ Spring Data Neo4j 4を持っており、平均重量の基準を返します。具体的にchildDecisionIdCriterionに追加されています。Neo4j Cypherクエリー複雑なネストされたQueryResultを持つSDN 4

MATCH (parentD:Decision)-[:CONTAINS]->(childD:Decision) 
WHERE id(childD) = {childDecisionId} AND id(parentD) = {parentDecisionId} 
WITH childD, parentD MATCH (parentD)<-[:DEFINED_BY]-(c:Criterion)<-[:VOTED_ON]-(vg:VoteGroup)-[:VOTED_FOR]->(childD) 
RETURN c AS criterion, vg.avgVotesWeight AS weight 

@Query("MATCH (parentD:Decision)-[:CONTAINS]->(childD:Decision) WHERE id(childD) = {childDecisionId} AND id(parentD) = {parentDecisionId} WITH childD, parentD MATCH (parentD)<-[:DEFINED_BY]-(c:Criterion)<-[:VOTED_ON]-(vg:VoteGroup)-[:VOTED_FOR]->(childD) RETURN c AS criterion, vg.avgVotesWeight AS weight") 
List<WeightedCriterion> getCriteriaWithAvgVotesWeightForChildDecision(@Param("childDecisionId") Long childDecisionId, @Param("parentDecisionId") Long parentDecisionId); 

これはWeightedCriterionQueryResultです:

私はこのクエリを変更する必要が
@QueryResult 
public class WeightedCriterion { 

    private Criterion criterion; 

    private Double weight; 

} 

単一の子意思決定のためではなく、すべての子の決定のためだけでなく、彼らの平均体重Criterionのリストを返すために親parentDecisionId ..つまり、このクエリは次のようなものを返します。

List<DecisionWeightedCriterion> 

ここで、DecisionWeightedCriterionは、例えば次のようになります。

@QueryResult 
public class DecisionWeightedCriterion { 

    private Decision decision; 

    private List<WeightedCriterion> weightedCriteria; 

} 

ことが可能であり、もしそうなら、あなたはこのサイファークエリで助けてくださいだろうか?私は、次のようにこのクエリを実装している

答えて

0

MATCH (parentD:Decision)-[:CONTAINS]->(childD:Decision) 
WHERE id(parentD) = {parentDecisionId} 
WITH childD, parentD MATCH (parentD)<-[:DEFINED_BY]-(c:Criterion)<-[:VOTED_ON]-(vg:VoteGroup)-[:VOTED_FOR]->(childD) WITH childD, {criterion: c, weight: vg.avgVotesWeight} AS weightedCriterion 
RETURN childD AS decision, collect(weightedCriterion) as weightedCriteria 

私が間違っているなら、私を修正してください。

関連する問題