密码查询:基于其他属性关系的集合,根据关系设置属性

时间:2020-05-07 17:55:38

标签: neo4j cypher

仍然会被网络弄湿。

我有以下情况。 每个BM_RU关系都有一个FinCYTD值。 nBM_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"
              ^

2 个答案:

答案 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 = ...)。

此外,此查询使用nrubm作为aggregating function SUM的分组关键字,因此每个总和为不同的n / ru / bm组合。 (我假设每个ru只有一个相关的bm。)

相关问题