Cypher: создайте узел и отношение в одном запросе - PullRequest
0 голосов
/ 11 февраля 2020

Мне нужно создать запрос neo4j cypher, который сначала создает узел MyGroup, затем узел MyDomain и, по крайней мере, связь между ними.

До сих пор я пробовал несколько вещей и в итоге получил:

CREATE (p:Group { Name: "myGroup"}), (d:Domain {Name:"myDomain"}) 
WITH MATCH(g:Group {Name:"myGroup"}), (d:Domain {Name:"myDomain"}) 
CREATE(g)-[r: MEMBER_IN]->(d)

Если я ввожу Create и MATCH отдельно, он работает, но не в комбинированном запросе вместе с WITH?

Спасибо

1 Ответ

1 голос
/ 11 февраля 2020

Поскольку у вас уже есть идентификатор, p для Group и d для Domain, вам не нужно повторно сопоставлять эти объекты перед созданием отношения.

Вы можете просто сделать это

CREATE (p:Group { Name: "myGroup"}), (d:Domain {Name:"myDomain"}) 
CREATE (p)-[r: MEMBER_IN]->(d)

В качестве альтернативы, вы можете создать их в одном выражении.

CREATE (p:Group { Name: "myGroup"})-[r: MEMBER_IN]->(d:Domain {Name:"myDomain"}) 

Или, если какой-либо или все элементы уже существуют, и вы не хотите их для воссоздания вы могли бы сделать что-то вроде следующего. MERGE будет либо CREATE элементов, если они не существуют, либо MATCH их, если они уже существуют.

MERGE (d:Domain {Name:"myDomain"}) 
MERGE (p:Group { Name: "myGroup"})
MERGE (p)-[r: MEMBER_IN]->(d)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...