管道RETURN查询以创建新节点(反过来关系)

时间:2016-01-27 10:29:56

标签: neo4j cypher nosql

我有一个csv文件:

MyClass::X()
MyDerivedClass::X()

我正在尝试导入此* .csv并创建关系。虽然导入部分成功,但我无法在节点之间分配特殊关系

例如:

    name,city,country
    aa,london,UK
    bd,Berlin,Germany
    cr,helsinki,Finland
    fe,Washington,US

但是,

(city)-[CAPITAL_OF]->(country) // This works (bw node to node)

现在,我需要在CREATE(state1:State{name=Washington, continent:North America)} 之间创建一个新关系,其中(state1)-[IS_DIFFERENT_TO]->(?)是华盛顿特区城市(之前创建的节点)。

?

我想用检索到的节点名称

填写USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM "file:///DB.csv" AS csvline MERGE(city:City{name:csvline.city}) MATCH (city:City{name:'Washington'}) RETURN city.name CREATE(state1)-[:IS_DIFFERENT_TO]->(?)

谢谢

3 个答案:

答案 0 :(得分:1)

你返回的是一个像字符串没有节点的名字。 你应该做点什么

0 0 12 1/1 * ? *

或许我没有得到它

答案 1 :(得分:1)

首先,我质疑是否需要IS_DIFFERENT_FROM关系。据推测,您没有任何同时具有CityState标签的节点。因此,即使它们具有相同的name属性,也应该很容易区分City和State节点。

然而,要回答你问的问题(据我所知):如果City和State节点已经存在,你只需要这样做:

MATCH (city:City {name:'Washington'}), (state:State{name='Washington'})
CREATE (city)-[:IS_DIFFERENT_FROM]->(state);
  1. 我将IS_DIFFERENT_TO更改为IS_DIFFERENT_FROM,更加语法化(我的北美耳朵)。
  2. 请注意,如果有多个名为' Washington'的城市和/或州,则此查询将在所有匹配的城市/州对之间创建:IS_DIFFERENT_FROM关系。

答案 2 :(得分:1)

不是100%清楚你要做什么,或者为什么你特意寻找“华盛顿”,但根据你的问题,这将做你想要的(在当地测试)。

MERGE (washington:City {name:'Washington'})
WITH washington

LOAD CSV WITH HEADERS FROM "file:///DB.csv" AS csvline
MERGE (city:City {name: csvline.city})
WITH city, washington

WHERE city.name <> washington.name
MERGE (city)-[:IS_DIFFERENT_TO]->(washington);
相关问题