我正在试图看看我是否有办法在Cypher中对节点中的所有统计数据进行总和(因此包括所有类型和类别,其中可能有很多)。或者在用户请求中排除一些例如排除所有category1或仅排除category1,type3。
希望我能正确解释,但我甚至不确定这是否可行。
答案 0 :(得分:1)
Foo
节点。这里的一个限制是我们需要在节点上存储该总数,如下所示:
create (a:Foo { type1: 3, type2: 4, type3: 7, total: 0 });
create (b:Foo { type1: 1, type2: 3, type4: 4, total: 0 });
现在,如果我们想要对这些属性求和:
MATCH (a:Foo)
FOREACH (prop in
filter(z in keys(a) WHERE z <> 'total') |
SET a.total = a.total + a[prop]);
分解这一点,keys
函数迭代节点中的所有属性。这里我们将浏览除 total
属性之外的所有属性。对于每个属性,我们只是将其值添加到总数中。中提琴。
假设您想要一组不同的属性而不是所有,您只需调整WHERE z<> 'total'
部分即可选择所需的属性,例如WHERE z = 'something' or z = 'something else'
最后:
MATCH (a:Foo) RETURN a.total;
+---------+
| a.total |
+---------+
| 14 |
| 8 |
+---------+