【问题标题】:Create multiple relationships of same type with different properties between two nodes from csv从csv创建两个节点之间具有不同属性的多个相同类型的关系
【发布时间】:2018-08-08 11:13:04
【问题描述】:

我在 Neo4jDesktop 中的两个节点之间创建具有不同属性的多个相同类型的关系时遇到问题。

Nodes dataset:
    File Name: 1.csv
    File Contents:
        Id,Desc
        A,Alpha
        B,Beta
        C,Charlie
        D,Doyce

Relationships Dataset:
    File Name: 2.csv
    File Contents:
        SeqNo,Date,Count,Weight,From,To
        0,2018-04-01,12,308,A,B
        1,2018-04-01,3,475,B,C
        2,2018-04-01,23,308,C,D
        3,2018-04-01,32,524,D,A
        4,2018-04-01,0,308,A,C
        5,2018-04-01,23,237,B,D
        6,2018-04-01,54,308,B,A
        7,2018-04-01,23,237,D,B
        8,2018-04-01,18,308,D,C
        9,2018-04-01,23,308,C,A
        10,2018-04-01,78,475,B,C
        11,2018-04-01,67,308,A,B
        12,2018-04-01,56,237,D,B
        13,2018-04-01,34,308,A,C
        14,2018-04-01,27,524,A,D
        15,2018-04-01,84,237,D,B


// Create Nodes
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:/1.csv" AS row
CREATE (:Node {Id: row.Id, Desc: row.Desc});

// Create Relationships
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:/2.csv" AS row
MERGE (from:Node {Id: row.From})
MERGE (to:Node {Id: row.To})
MERGE (from)-[rel:RELATED_AS]->(to)
ON CREATE SET rel.SeqNo  = toInt(row.SeqNo), 
              rel.Date   = row.flightDate, 
              rel.Count  = toInteger(row.Count), 
              rel.Weight = toFloat(row.Weight)



此语法有效,仅创建 11 个关系,两个节点之间具有传入和传出关系。

它忽略了 A-B、B-C、A-C 和 D-B 之间的附加关系(2 个附加关系)。

如何创建包含所有 16 个关系的图形?

提前致谢。

梅尔。

【问题讨论】:

  • 欢迎您。您可以编辑您的问题以正确显示代码块吗?在代码前使用四个空格或在问题编辑器中使用按钮。问题将变得更具可读性和更有趣:)

标签: neo4j relationship


【解决方案1】:

您的第二个查询是合并关系(from)-[rel:RELATED_AS]->(to),因此 Cypher 匹配该模式(如果存在)。因此后续的匹配,但由于ON CREATE 语句,这些值永远不会更新。

由于您希望每次都创建关系,因此您可以将语句替换为以下内容。

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:/2.csv" AS row
MERGE (from:Node {Id: row.From})
MERGE (to:Node {Id: row.To})
CREATE (from)-[rel:RELATED_AS {SeqNo: row.SeqNo, Date: row.flightDate, Count: toInteger(row.Count), Weight: toFloat(row.Weight)}]->(to)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多