Neo.ClientError.Statement.SemanticError: Невозможно объединить узел, используя нулевое значение свойства для идентификатора - PullRequest
0 голосов
/ 15 сентября 2018

Я использую этот запрос для создания некоторых отношений, но мне нужно создать узел, если он не существует, но свойство слияния создает для некоторых, а для других записей он дает ноль на id для слияния.

В принципе, если запись существует, она должна объединиться, иначе она должна создать, как мне это сделать?

MATCH (p:person{username:'abc.com'})-[hc:HAS_RELATION]->(pp:person{username:'xyz.com'}) 
    MERGE (con:ContactInfo{Id:hc.ContactInfoId})
    ON MATCH SET con.Updated=timestamp(),hc.ContactInfoId=ID(con) 
    ON CREATE SET con:PersonContact,con.Created =timestamp(),con.Id=ID(con),hc.ContactInfoId=ID(con) 
    WITH con

Пожалуйста, помогите

1 Ответ

0 голосов
/ 17 сентября 2018

Вы делаете MERGE (con:ContactInfo{Id:hc.ContactInfoId}), но если hc.ContactInfoId равно NULL, вы получите вашу ошибку.

Таким образом, это означает, что у вас есть отношение HAS_RELATION на вашем графике без свойства ContactInfoId.

Чтобы избежать вашей ошибки, вы можете использовать функцию coalesce в cypher. Эта функция принимает 2 аргумента: если первое значение равно NULL, то десять возвращает второе значение.

Так что, возможно, вы можете использовать это слияние: MERGE (con:ContactInfo{Id:coalesce(hc.ContactInfoId, id(hc))})

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