通过CSV中的两个geohash列合并创建节点

时间:2018-08-12 01:45:31

标签: neo4j cypher

所以我打算用neo4j创建一个geohash图。

我的CSV每行包含两个有关geohash的信息,一个信息用于提取,另一个信息用于下放,如下所示: Pre-processed data

我想要的是:

  • 不应重新创建具有与另一个哈希相同的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)

merge

如您所见,同一个geohash dr5rkky节点被创建两次,一个用于拾取,另一个用于放置

如何避免这种情况?

1 个答案:

答案 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中。