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 |
+---------+
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