我有一个类似下面的CSV
我已经将CSV导入了neo4j
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
但是,输出在下面
我的期望是
区别在于它将按公司A分组,因为它们相同 价格除外。我想知道Neo4j是否有可能 合并吗?还是只能在桌子上显示?谢谢你的 帮助
答案 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