仍然会被网络弄湿。
我有以下情况。
每个BM_RU
关系都有一个FinCYTD
值。
n
与BM_RU
有多个ru
关系。
我试图添加或设置一个bm
属性,这些属性是这些关系上FinCYTD
值的总和。
match (n:BrickMrtr)-[b:BM_RU]->(ru:RU)<-[bm:BM_RU_F]-(n)
where n.Id = '1000829'
with n.Id as bm, sum(toInteger(b.FinCYTD)) as sum_f, ru.RuName as nm, bm.Amt as bm_amt
set bm_amt = sum_f
我认为上面的方法可以工作,但是出现以下错误:
Type mismatch: expected Map, Node or Relationship but was Integer (line 5, column 14 (offset: 239))
"set bm_amt = sum_f"
^
答案 0 :(得分:0)
你可以试试吗?
match (n:BrickMrtr)-[b:BM_RU]->(ru:RU)<-[bm:BM_RU_F]-(n)
where n.Id = '1000829'
with n, sum(toInteger(b.FinCYTD)) as sum_f
set bm.amt = sum_f
答案 1 :(得分:0)
这将满足您的预期目的
MATCH (n:BrickMrtr)-[b:BM_RU]->(ru:RU)<-[bm:BM_RU_F]-(n)
WHERE n.Id = '1000829'
WITH n, ru, bm, SUM(toInteger(b.FinCYTD)) as sum_f
SET bm.Amt = sum_f
您必须为属性(SET bm.Amt = ...
)分配一个值。您正在尝试将值分配给另一个变量(SET bm_amt = ...
)。
此外,此查询使用n
,ru
和bm
作为aggregating function SUM
的分组关键字,因此每个总和为不同的n
/ ru
/ bm
组合。 (我假设每个ru
只有一个相关的bm
。)