Neo4j sum函数无法正常工作

时间:2018-08-02 07:38:21

标签: neo4j

我有一个类似下面的CSV

我已经将CSV导入了neo4j

enter image description here

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS
FROM "file:///testset.csv" AS line WITH line

CREATE (c:Company {name: line.`company`})
MERGE (s:Supermarket {name:line.`supermarket`})


CREATE (c)-[r:trade{product:line.`product`,country:line.`country`,price:line.`price`}]->(s)
SET r.price = tofloat(r.price)
;

因此想生成一个图形关系以查看公司与超市之间的关系。

MATCH (c:Company)-[r:trade]->(s:Supermarket)
RETURN c,sum(r.price),s

但是,输出在下面

enter image description here

我的期望是

enter image description here

  

区别在于它将按公司A分组,因为它们相同   价格除外。我想知道Neo4j是否有可能   合并吗?还是只能在桌子上显示?谢谢你的   帮助

1 个答案:

答案 0 :(得分:1)

在图形数据库中,通常希望避免节点重复。我认为最好重新导入,以使您在每个不同的节点(:Company和:Supermarket)中只有一个。

尝试使用公司的MERGE而不是CREATE进行重新导入,这样每个公司只能有一个不同的节点。

有了这一更改,您的查询现在应该会生成正确的表格结果(公司和超市之间的正确总和),但是如果您想形象化显示价格总和之间的关系,则需要使用APOC Procedures for virtual relationships ,因为图中实际上不存在与总和的这种关系。

MATCH (c:Company)-[r:trade]->(s:Supermarket)
WITH  c, sum(r.price) as totalPrice, s
CALL apoc.create.vRelationship(c,'trade',{price:totalPrice}, s) YIELD rel
RETURN c, rel, s