Как создавать ярлыки Neo4j / Cypher динамически с переменной? - PullRequest
0 голосов
/ 26 февраля 2020

Когда я пытаюсь:

CALL apoc.load.jdbc('jdbc:mysql://localhost/mysql?user=root&password=root&useUnicode=true&characterEncoding=utf8','select * from db')YIELD row
WHERE row.label = 'dis' MERGE (n:dis {name: row.keyword})
WHERE row.label = 'part' MERGE (n:part {name: row.keyword})

и возникает ошибка

Neo.ClientError.Statement.SyntaxError: Invalid input 'H': expected 'i/I'

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

Если вы намереваетесь сопоставить узел с указанной меткой c, вам, вероятно, следует использовать предложение MATCH (:label) вместо WHERE label = ...

CALL apoc.load.jdbc('jdbc:mysql://localhost/mysql?user=root&password=root&useUnicode=true&characterEncoding=utf8','select * from db')YIELD row
OPTIONAL MATCH (row:dis) MERGE (n:dis {name: row.keyword})
OPTIONAL MATCH (row:part) MERGE (n:part {name: row.keyword})
0 голосов
/ 26 февраля 2020

вы можете использовать функции apo c, чтобы сделать это

CALL apoc.merge.node(['Label'], identProps:{key:value, …​}, onCreateProps:{key:value,…​}, onMatchProps:{key:value,…​}})

следующий запрос будет динамически читать имена меток и объединять узлы с соответствующей меткой

CALL apoc.load.jdbc('jdbc:mysql://localhost/mysql?user=root&password=root&useUnicode=true&characterEncoding=utf8','select * from db')YIELD row 
CALL apoc.merge.node([row.label], identProps:{name:row.keyword}, onCreateProps:{}, onMatchProps:{}}) YIELD node 
RETURN node 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...