Neo4j.rb: друзья друзей, с которыми у пользователя много общих друзей - PullRequest
0 голосов
/ 04 июня 2019

У меня есть 1 узел и 1 отношение

Узел - пользователь

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

Отношение имеет 1 статус атрибута, который должен быть 1 (это означает, что пользователь является другом, 0 означает, что запрос на соединение ожидает рассмотрения)

  Neo4j::ActiveBase.new_query.match(n: {StayPal: { uuid: "005d-46de- 
  9ab4-b54aa7a92a8a" }}).break.match('(n)-[:connected_to {status: 1}]- 
  (mutual)-[:connected_to {status: 1}]-(friends_of_friends: 
  `StayPal`)').break.match('(n)-[:connected_to {status: 1}]-(mutual2)- 
  [:connected_to {status: 1}]- 
  (friends_of_friends)').return('friends_of_friends, mutual2')

Запрос шифрования:

MATCH (n:`StayPal` {uuid: {n_StayPal_uuid}}) MATCH (n)-[:connected_to 
{status: 1}]-(mutual)-[:connected_to {status: 1}]-(friends_of_friends: 
`StayPal`) MATCH (n)-[:connected_to {status: 1}]-(mutual2)- 
[:connected_to {status: 1}]-(friends_of_friends) RETURN 
friends_of_friends, mutual2

Пожалуйста, помогите мне, если я делаю это правильно?взаимный2 должен быть массивом, я думаю, но он дает только 1 пользователя с 1 friends_of_friend

1 Ответ

0 голосов
/ 04 июня 2019

надеюсь, это поможет

MATCH (n:`StayPal` {uuid: {n_StayPal_uuid}})-[:connected_to {status: 1}]-(mutual)-[:connected_to {status: 1}]-(friends_of_friends: `StayPal`) 
RETURN DISTINCT friends_of_friends , COLLECT(DISTINCT mutual), COUNT(mutual) as mutualCount 
ORDER BY mutualCount DESC LIMIT 10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...