2 votes

Neo4j 2.0 - additionner les résultats des relations à partir de la requête cypher

Nouveau sur Neo4j.

J'ai des noeuds reliés par des relations qui ont une propriété "poids" avec un nombre. J'essaie d'obtenir une moyenne des propriétés de poids pour toutes les relations retournées dans la requête.

Voici la requête que j'essaie d'effectuer :

MATCH (x)-[r*1..6]-prod:Product 
WHERE x.name = 'ddbrown::default' 
RETURN sum(r.weight);

J'obtiens l'exception suivante

CypherTypeException: Expected `r` to be a Map but it was a Collection<relationship>

Il est évident que j'interprète mal ce qui est renvoyé comme r, mais je ne sais pas comment obtenir un pointeur nommé pour chaque relation.

Merci pour toute aide ! Dean

5voto

Thomas Fenzl Points 4242

Sum peut être utilisé pour agréger plusieurs valeurs de retour appariées. Ce qu'il faut faire, c'est calculer une valeur sur plusieurs parties des chemins. r assortis. Pour calculer des valeurs sur des collections, vous pouvez utiliser réduire le site

match x -[r*1..6]-prod:Product
WHERE x.name = 'ddbrown::default' 
return x, reduce(acc=0, n in r: acc + n.weight)/length(r)

Dans un autre ordre d'idées, vous faites correspondre tous les types de relations possibles et les relations dans les deux sens dans votre requête. Vous pourriez vouloir restreindre cela aux types de relations spéciales et dirigées.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X