将方法代码移动到Neo4j Cypher查询
我有一个springneo4j存储库方法将方法代码移动到Neo4j Cypher查询,neo4j,cypher,graph-databases,spring-data-neo4j,Neo4j,Cypher,Graph Databases,Spring Data Neo4j,我有一个springneo4j存储库方法getavgvotesweightforcriteria @Query("MATCH (d:Decision)<-[:VOTED_FOR]-(v:Vote)-[:VOTED_ON]->(c:Criterion) WHERE id(d) = {0} AND id(c) = {1} RETURN avg(v.weight)") double getAvgVotesWeightForCriterion(Decision decision, Crite
getavgvotesweightforcriteria
@Query("MATCH (d:Decision)<-[:VOTED_FOR]-(v:Vote)-[:VOTED_ON]->(c:Criterion) WHERE id(d) = {0} AND id(c) = {1} RETURN avg(v.weight)")
double getAvgVotesWeightForCriterion(Decision decision, Criterion criterion);
是否可以将calculatewight
方法中的逻辑完全移动到Cypher查询?为了得到这样的东西:
@Query ....
double calculateWeight(Decision decision, List<Criterion> criteria)
@Query。。。。
双重计算权(决策、列表标准)
这应该是您想要做的
您可以根据标准对平均聚合进行分组,然后对权重求和
MATCH (d:Decision)<-[:VOTED_FOR]-(v:Vote)-[:VOTED_ON]->(c:Criterion)
WHERE id(d) = {0} AND id(c) IN {1}
WITH c, avg(v.weight) as weight
RETURN sum(weight)
匹配(d:决策)(c:标准)
其中id(d)={0}和{1}中的id(c)
以c、平均重量(v.重量)作为重量
返回和(重量)
MATCH (d:Decision)<-[:VOTED_FOR]-(v:Vote)-[:VOTED_ON]->(c:Criterion)
WHERE id(d) = {0} AND id(c) IN {1}
WITH c, avg(v.weight) as weight
RETURN sum(weight)