Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 创建新节点的管道返回查询(依次关系)_Neo4j_Cypher_Nosql - Fatal编程技术网

Neo4j 创建新节点的管道返回查询(依次关系)

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)-[与]->(?)之间创建一个新的关系,其中?是华盛顿特区(先前创建的节点) 我想用检索到的节点名填写? 谢谢您返回的是一个

我有一个csv文件,其中包含:

    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);