【问题标题】:FOREACH in cypher - neo4j密码中的 FOREACH - neo4j
【发布时间】:2017-08-01 07:27:34
【问题描述】:

我是 CYPHER QUERY LANGUAGE 的新手,我正在研究节点之间的关系。 我有一个包含多列和 1000 行的表的 CSV 文件。 我的表格模板是:

cdrType    ANUMBER    BNUMBER    DUARTION    
2          123        456        10 
2          890        456        5 
2          123        666        2 
2          123        709        7 
2          345        789        20 

我已经使用这些命令来创建节点和属性键。

LOAD CSV WITH HEADERS FROM "file:///2.csv" AS ROW
CREATE (:ANUMBER {aNumber:ROW.aNumber} ),
CREATE (:BNUMBER {bNumber:ROW.bNumber} )

现在我需要在表中的所有行之间创建关系,我认为 FOREACH 循环在我的情况下是最好的。我创建了这个查询,但它给了我一个错误。查询是:

MATCH (a:ANUMBER),(b:BNUMBER)
FOREACH(i in RANGE(0, length(ANUMBER)) | 
    CREATE UNIQUE (ANUMBER[i])-[s:CALLED]->(BNUMBER[i]))

错误是:

无效的输入“[”:需要一个标识符字符、空格、 NodeLabel,属性映射,')' 或关系模式(第 3 行, 第 29 列(偏移量:100))“创建唯一 (a:ANUMBER[i])-[s:CALLED]->(b:BNUMBER[i]))"

我需要每一行的关系。就像我的情况一样。 123 - 叫 -> 456 , 890 - 叫 -> 456。所以我需要这个呼叫数据的可视化表示,哪个号码叫哪个号码。为此,我需要在所有行之间创建关系。

有人知道如何解决这个问题吗?

【问题讨论】:

    标签: java neo4j cypher graph-databases


    【解决方案1】:

    怎么样:

    LOAD CSV WITH HEADERS FROM "file:///2.csv" AS ROW
    CREATE (a:ANUMBER {aNumber:ROW.aNumber} )
    CREATE (b:BNUMBER {bNumber:ROW.bNumber} )
    MERGE (a)-[:CALLED]->(b);
    

    这并不比 i.m.o. 复杂。

    希望这会有所帮助!

    问候, 汤姆

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-25
      • 1970-01-01
      • 1970-01-01
      • 2013-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-18
      相关资源
      最近更新 更多