Neo4j 创建新节点的管道返回查询(依次关系)
我有一个csv文件,其中包含:Neo4j 创建新节点的管道返回查询(依次关系),neo4j,cypher,nosql,Neo4j,Cypher,Nosql,我有一个csv文件,其中包含: name,city,country aa,london,UK bd,Berlin,Germany cr,helsinki,Finland fe,Washington,US 我正在尝试导入此*.csv并创建关系。导入部分成功时,我无法在节点之间分配特殊关系 例如: 但是, 现在,我需要在(state1)-[与]->(?)之间创建一个新的关系,其中?是华盛顿特区(先前创建的节点) 我想用检索到的节点名填写? 谢谢您返回的是一个
name,city,country
aa,london,UK
bd,Berlin,Germany
cr,helsinki,Finland
fe,Washington,US
我正在尝试导入此*.csv并创建关系。导入部分成功时,我无法在节点之间分配特殊关系
例如:
但是,
现在,我需要在(state1)-[与]->(?)
之间创建一个新的关系,其中?
是华盛顿特区(先前创建的节点)
我想用检索到的节点名填写?
谢谢您返回的是一个类似字符串no node的名称。 你应该这样做
Match()(where you look op state1)
Match(city:City{name:'Washington'})
CREATE(state1)-[:IS_DIFFERENT_TO]->(city)
RETURN city.name
或者可能我不明白您返回的是一个名称,比如string no node。 你应该这样做
Match()(where you look op state1)
Match(city:City{name:'Washington'})
CREATE(state1)-[:IS_DIFFERENT_TO]->(city)
RETURN city.name
或者可能我不明白首先,我怀疑是否需要这种关系。假设没有任何节点同时具有
City
和State
标签。因此,即使城市和州节点具有相同的名称
属性,也应该很容易区分它们
但是,要回答您提出的问题(据我所知):如果城市和州节点已经存在,您只需要执行以下操作:
MATCH (city:City {name:'Washington'}), (state:State{name='Washington'})
CREATE (city)-[:IS_DIFFERENT_FROM]->(state);
不同于改为不同于,更符合语法(在我的北美耳朵里)
:IS_DIFFERENT_的关系
首先,我怀疑
与的关系是否需要。假设没有任何节点同时具有City
和State
标签。因此,即使城市和州节点具有相同的名称
属性,也应该很容易区分它们
但是,要回答您提出的问题(据我所知):如果城市和州节点已经存在,您只需要执行以下操作:
MATCH (city:City {name:'Washington'}), (state:State{name='Washington'})
CREATE (city)-[:IS_DIFFERENT_FROM]->(state);
我把不同于改为不同于,更符合语法(在我的北美耳朵里)
请注意,如果有多个名为“华盛顿”的城市和/或州,此查询将在所有匹配的城市/州对之间创建一个:IS_DIFFERENT_的关系
现在还不是100%清楚你想做什么,或者你为什么特别寻找“华盛顿”,但根据你的问题,这会做你想做的(在当地测试)
MERGE(华盛顿:城市{name:'washington'})
与华盛顿
从“加载带有标题的CSV”file:///DB.csv“作为csvline
合并(城市:城市{名称:csvline.city})
与华盛顿市
WHERE city.name washington.name
合并(城市)-[:不同于]->(华盛顿);
不清楚您想做什么,也不清楚您为什么特别寻找“华盛顿”,但根据您的问题,这将满足您的需求(在当地测试)
MERGE(华盛顿:城市{name:'washington'})
与华盛顿
从“加载带有标题的CSV”file:///DB.csv“作为csvline
合并(城市:城市{名称:csvline.city})
与华盛顿市
WHERE city.name washington.name
合并(城市)-[:不同于]->(华盛顿);
我不明白这个问题。我不明白这个问题。“不同于”vs“不同于”取决于你在哪里。。。英国英语(英国、澳大利亚等)对美国。。。就像我们“可爱的”不连贯的语言。。。不一定是黑白的;-)@萨姆,马特。谢谢你的澄清。虽然上面提供的数据只是一个玩具般的例子,但实际的CSV文件太大了。我的问题更多的是确定一个特定的节点(通过从CSV文件导入项目创建),用于创建与新创建的节点的关系。。。英国英语(英国、澳大利亚等)对美国。。。就像我们“可爱的”不连贯的语言。。。不一定是黑白的;-)@萨姆,马特。谢谢你的澄清。虽然上面提供的数据只是一个玩具般的例子,但实际的CSV文件太大了。我的问题更多的是确定一个特定的节点(通过从CSV文件导入项目创建),用于创建与新创建的节点的关系。
MATCH (city:City {name:'Washington'}), (state:State{name='Washington'})
CREATE (city)-[:IS_DIFFERENT_FROM]->(state);
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);