Как добавить больше свойств для того же узла через файл CSV в Cypher? - PullRequest
0 голосов
/ 19 апреля 2020

Допустим, сначала создадим узлы Order через файл CSV orders.csv

// Create orders
LOAD CSV WITH HEADERS FROM 'file:///orders.csv' AS row
MERGE (order:Order {orderID: row.OrderID}) 
  ON CREATE SET order.shipName = row.ShipName

Позже я добавил дополнительные столбцы в orders.csv, и, полагаю, я могу добавить новые свойства в график следующим образом:

LOAD CSV WITH HEADERS FROM 'file:///orders.csv' AS row
MERGE (order:Order {orderID: row.OrderID}) 
  ON CREATE SET order.shipName = row.ShipName, order.customerId = row.CustomerID, order.employeeID = row.EmployeeID;

Здесь два новых свойства 'customerId' и 'employeeId' будут добавлены к каждому узлу Заказа. Я протестировал эту команду, но она вообще не меняет график. Добавляется ли функция слияния в график постепенно?

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

ON CREATE используется MERGE только когда ему нужно создать что-то.

С другой стороны, ON MATCH используется MERGE, когда ему не нужно ничего создавать.

Итак, ваш новый запрос должен выглядеть следующим образом (при условии, что вы не добавили новые строки в файл CSV, а только столбцы):

LOAD CSV WITH HEADERS FROM 'file:///orders.csv' AS row
MERGE (order:Order {orderID: row.OrderID}) 
  ON MATCH SET order.customerId = row.CustomerID, order.employeeID = row.EmployeeID;
0 голосов
/ 20 апреля 2020

MERGE работает именно с тем выражением, которое вы ему предоставили, поэтому

MERGE (order: Order {orderID: row.OrderID})

проверит наличие узла с меткой Order и свойством orderID, для которого установлено значение (и тип) row.orderID. Если он не существует точно, он будет создан.

Поскольку вы используете ON CREATE..., эта строка будет появляться только в том случае, если узел создается слиянием, а не если он просто найден (соответствует).

Возможно, вы захотите использовать ON MATCH... вместо - https://neo4j.com/docs/cypher-manual/current/clauses/merge/#query -merge-on-create-on-match

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...