Соедините ключи из 2 узлов в одном возвращаемом значении в Neo4j 3.2.15 и cypher-3.1 - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь получить запрос «Рекомендация друга».Узлы имеют следующую последовательность (Node) - [FRIEND] - (Node) - [INFO] - (P_info), где каждый узел имеет отношение INFO с ассоциированным узлом P_info.Я могу получить список рекомендуемых друзей узла, но мне нужно включить ключи P_info в ключи рекомендуемых друзей, чтобы вернуть все вместе.

В данный момент это мой запрос:

match (person:Account{_id:"185860469"})
match (person)-[:FRIEND]-()-[:FRIEND]-(potentialFriend)
where not (person)-[:FRIEND]-(potentialFriend)
match (potentialFriend)-[:INFO]-(information:P_info)
with person,potentialFriend, COUNT(*) AS friendsInCommon,information
where friendsInCommon > 5
return {user:person,recommend:collect(potentialFriend)},{info:information}

но информация "info" не ассоциируется с "потенциала друзей" в ответе.Я хочу сделать что-то вроде этого: return {user:person,collect(potentialFriend,information)}, но я не знаю, возможно ли это, Сайфер говорит:

Слишком много параметров для функции 'collect'

заранее спасибо.

1 Ответ

0 голосов
/ 15 февраля 2019

Я сделал это, просто добавив еще WITH. Я оставляю ответ на случай, если кто-то поможет

WITH person,{friend_id:potentialFriend._id,friend_name:information.name} AS Recommended_friend
RETURN person._id,collect(Recommended_friend)

, это вернет уникальный ответ с идентификатором человека и массив со всеми рекомендуемыми друзьями дляего.

...