Итак, я пытаюсь создать набор запросов, которые будут выполнять следующие действия с учетом списка узлов:
Если есть узел, который связан со всеми узлами в списке, верните этот узел
Если есть такой узел нет, создайте узел и отношения с каждым узлом в списке.
Моя первая попытка была с этими двумя запросами:
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
Но в результате создается один узел диалога для пользовательского узла каждый, и мне нужен один узел диалога, который подключен к пользовательским узлам все.
Как я могу этого добиться?
В предложении WITH
вам необходимо передать Пользователь:
MATCH (user:User) WHERE user.id IN {userIds}
MERGE (conversation:Conversation {id: {conversationId}})
WITH conversation, user
MERGE (user)-[:In]->(conversation)
RETURN conversation