2017-09-09 1 views
1

J'essaie de voir s'il y a un moyen que je peux dans Cypher de faire une somme de toutes les statistiques dans les nœuds (y compris tous les types et catégories, où il peut y en avoir beaucoup). Ou à la demande des utilisateurs, excluez certains comme l'exclusion de toute catégorie1 ou simplement l'exclusion de catégorie1, type3.Somme des valeurs de propriétés spécifiques

J'espère que je l'ai expliqué correctement mais je ne suis même pas sûr que ce soit possible.

enter image description here

+0

Vous allez devoir fournir plus d'informations sur la façon dont ces catégories et types sont représentés dans votre structure graphique. Sont ces propriétés de certains nœuds? Étiquettes? – InverseFalcon

Répondre

1

Eh oui, vous pouvez le faire. Imaginez deux nœuds Foo avec ces propriétés. Une limitation est que nous devons stocker ce total sur le nœud, comme ceci:

create (a:Foo { type1: 3, type2: 4, type3: 7, total: 0 }); 
create (b:Foo { type1: 1, type2: 3, type4: 4, total: 0 }); 

Maintenant, si nous voulons résumer ces propriétés:

MATCH (a:Foo) 
    FOREACH (prop in 
    filter(z in keys(a) WHERE z <> 'total') | 
    SET a.total = a.total + a[prop]); 

Briser ce que cela fait, la fonction keys itère sur toutes les propriétés d'un noeud. Ici, nous passons par toutes les propriétés sauf la propriété total. Pour chaque propriété, nous ajoutons simplement sa valeur au total. Alto.

Supposons que vous vouliez un autre ensemble de propriétés et non tous d'entre eux, vous souhaitez simplement ajuster la partie WHERE z<> 'total' de choisir ceux que vous voulez, comme WHERE z = 'something' or z = 'something else'

Enfin:

MATCH (a:Foo) RETURN a.total; 
+---------+ 
| a.total | 
+---------+ 
| 14  | 
| 8  | 
+---------+