所以我打算用neo4j创建一个geohash图。
我的CSV每行包含两个有关geohash的信息,一个信息用于提取,另一个信息用于下放,如下所示:
我想要的是:
我尝试使用MERGE
,但按列工作:
load csv from "file:///green_data.csv" as line
merge(pick:pickup{geohash:line[20]})merge (drop:dropoff{geohash: line[22]})merge(pick)-[:trip]->(drop)
如您所见,同一个geohash dr5rkky
节点被创建两次,一个用于拾取,另一个用于放置
如何避免这种情况?
答案 0 :(得分:1)
load csv from "file:///green_data.csv" as line MERGE(p:HashNode {geohash: line[20]}) ON CREATE set p.pickup=True ON MATCH set p.pickup=True MERGE(d:HashNode {geohash: line[22]}) ON CREATE set d.dropoff=True ON MATCH set d.dropoff=True MERGE (p)-[:trip]->(d)
基于neo4j docs:
MERGE匹配现有节点并将其绑定,或者创建新数据并将其绑定。就像MATCH和CREATE的组合一样,您还可以指定匹配或创建数据时会发生什么。 MERGE的最后一部分是ON CREATE和ON MATCH。这些查询使查询可以表达对节点或关系属性的其他更改,具体取决于元素是在数据库中是MATCH -ed还是在CREATE -ed中。