У меня есть следующий код:Neo4j добавить уникальное значение для массива недвижимости
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM
'file:///C:/Users/Zona/Documents/Neo4j/check/import/result1.csv' AS line1
MERGE (p:Person {forename:line1.forename, surname:line1.surname})
ON CREATE SET p.compNumber =
CASE
WHEN NOT EXISTS (p.compNumber) THEN line1.CompanyNumber
WHEN EXISTS(p.compNumber) AND line1.CompanyNumber NOT IN p.compNumber THEN p.compNumber + line1.CompanyNumber
ELSE p.compNumber
END
ON MATCH SET p.compNumber =
CASE
WHEN NOT EXISTS (p.compNumber) THEN line1.CompanyNumber
WHEN EXISTS(p.compNumber) AND line1.CompanyNumber NOT IN p.compNumber THEN p.compNumber + line1.CompanyNumber
ELSE p.compNumber
END
То, что я пытаюсь сделать, это добавить compNumber
свойства массива в Person
узлов. Итак, я проверяю, существует ли свойство compNumber
в узле, и если новое значение, которое нужно добавить, еще не находится в этом свойстве. Если свойство не существует, оно создает его с желаемым значением, и если оно существует, а значение не находится в массиве, то значение добавляется к массиву.
Этот запрос вызывает ошибку. Кто-нибудь знает, что я делаю неправильно здесь, и есть ли более красивое решение моей проблемы?
Есть ли причина, по которой вы не можете использовать: Компания или: узел CompanyNumber, подключенный к: Лицу вместо хранения в массиве объекта: Person? Это также будет полезно, если вам нужно искать: Лица по номеру компании позже. – InverseFalcon
То, что у меня есть сейчас: компания с узлами, которые имеют свойство 'companyNumber', и подумали о добавлении свойства' compNumber' в: Person и затем сопоставлении их по числу. Вы предлагаете удалить свойство 'companyNumber' из: Company и создать новый узел с свойством' companyNumber' как свойство, а затем подключить узлы ': Person' и': Company' к этому узлу, как этот '(: Person) -> [: HAS_NUMBER] -> (: CompanyNumber) <- [: HAS_NUMBER] - (: Компания) '? – Porjaz
Нет, это кажется немного чрезмерным. Если у вас уже есть: узлы компании с свойством companyNumber (я предполагаю, что существует уникальное ограничение на: Company (companyNumber)), тогда нет причин, по которым вы создаете отношения между: Лица и: Компании с данным номером компании вместо хранения компанииNumber в массив. Это почти похоже на то, что вы пришли из реляционной базы данных с внешними ключами между таблицами. В Neo4j внешние ключи, как правило, не используются, предпочтительны отношения между узлами. – InverseFalcon