Как создать один узел со связями для всех узлов, соответствующих запросу? - PullRequest
0 голосов
/ 13 сентября 2018

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

  1. Если существует узел, имеющий отношения ко всем узлам в списке, вернуть этот узел

  2. Если существует , а не такой узел, создайте узел и связи с каждым узлом в списке

Моя первая попытка была с этими двумя запросами:

MATCH (u:User) WHERE u.id IN {userIds} 
WITH collect(u) as users
MATCH (conversation:Conversation) 
WHERE ALL(u in users WHERE (u)-->(conversation)) 
RETURN conversation

MATCH (user:User) WHERE user.id IN {userIds} 
MERGE (conversation:Conversation {id: {conversationId}}) 
WITH conversation 
MERGE (user)-[:In]->(conversation) 
RETURN conversation

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

Как мне этого добиться?

1 Ответ

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

В вашем предложении WITH необходимо передать user :

MATCH (user:User) WHERE user.id IN {userIds} 
MERGE (conversation:Conversation {id: {conversationId}}) 
WITH conversation, user 
MERGE (user)-[:In]->(conversation) 
RETURN conversation
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...