2016-06-18 7 views
2

У меня есть два узла, созданных в базе данных графов, аэропорту происхождения и аэропорту назначения. Это связано с именем «delayed_by». Мне нужно связать несколько значений с этим свойством «delayed_by». Существуют различные причины задержек, такие как погодная задержка, задержка несущей, задержка nas, и мне нужно связать все их с этим свойством в базе данных графа. Я ожидаю значение, что и ниже табличного формата в базе данных графаКак связать множественное значение с использованием запросов cypher в Neo4j

ORIGIN DEST carr_delay weather_delay nas_delay 
ABE  ATL  492   56    56 

Я использовал следующий код для связи:

MATCH (origin:origin_airport {name: row.ORIGIN}), 
(destination:dest_airport {name: row.DEST}) 
CREATE (origin)-[:delayed_by {carr_delay: row.carr_delay}]->(destination) 
CREATE (origin)-[:delayed_by {weather_delay: row.weather_delay}]->  
(destination) 
CREATE (origin)-[:delayed_by {nas_delay: row.nas_delay}]->(destination) 

Но отношений delayed_by становится сопоставляется в 3 раза, и это создает что-то вроде ниже:

ORIGIN DEST carr_delay weather_delay nas_delay 
ABE  ATL  492   NULL    NULL 

ORIGIN DEST carr_delay weather_delay nas_delay 
ABE  ATL  NULL   56   NULL 

ORIGIN DEST carr_delay weather_delay nas_delay 
ABE  ATL  NULL   NULL   56 

Я пытался использовать код, приведенный ниже, как это предлагается в одной другой должности,

MATCH (origin:origin_airport {name: row.ORIGIN}), 
    (destination:dest_airport {name: row.DEST}) 
    CREATE (origin) 
     -[:delayed_by {type: carr_delay, value: row.carr_delay}]-> 
     (destination) 
    CREATE (origin) 
     -[:delayed_by {type: weather_delay, value: row.weather_delay}]-> 
     (destination) 
    CREATE (origin) 
     -[:delayed_by {type: nas_delay, value: row.nas_delay}]-> 
     (destination) 

Но он не принимает тип :, значение: свойства и я получаю сообщение об ошибке при типе

Error: Client error: (400) Bad Request 
Neo.ClientError.Statement.SyntaxError 

Как добавить несколько значения свойства с использованием Cypher запросов в Neo4j ?. Я пишу эти запросы в R, связывая R с Neo4j.

+0

Я использовал для выполнения других запросов cypher в R, и все это работало нормально. Но я получаю проблему только для этого запроса. – SRS

ответ

2

Вот что НАГРУЗКИ CSV Cypher заявление может выглядеть как-

LOAD CSV WITH HEADERS FROM "file:///Users/luanne/temp/so.csv" AS row 
MERGE (origin:origin_airport {name: row.ORIGIN}) 
MERGE (destination:dest_airport {name: row.DEST}) 
MERGE (origin)-[r:delayed_by]->(destination) 
SET r.carr_delay=row.carr_delay, r.weather_delay=row.weather_delay, r.nas_delay=row.nas_delay 

Вы» я хочу СОХРАНИТЬ отношения между двумя аэропортами, чтобы в итоге было достигнуто ровно одно отношение delayed_by b между ними. Или, если у вас есть ряд для каждого аэропорта, вы можете изменить этот MERGE отношения с CREATE.

1

Вы опечатка, вы забыли о кавычках:

CREATE (origin) 
     -[:delayed_by {type: carr_delay, value: row.carr_delay}]-> 
     (destination) 

=>

CREATE (origin) 
     -[:delayed_by {type: "carr_delay", value: row.carr_delay}]-> 
     (destination) 
+0

У меня ошибка. Я исправил опечатку, R принимает одиночные кавычки «carr_delay», а не двойные кавычки «carr_delay». Большое спасибо за ваше предложение – SRS

Смежные вопросы