Отношения количества шифров neo4j между узлами одного типа

Я слишком новичок в базах данных графов, и у меня проблема с получением данных из такой модели.

введите здесь описание изображения

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

User , Count, Drinks
User3,     2, [ Cola, Beer ]
User2,     1, [ Cola ]
User5,     1, [ Tea ]
User4,     0, [ ]
User6,     0, [ ]

Это кажется легкой задачей, но не для меня.

Я могу получить пользователей и количество пользователей, имеющих отношения с пользователями, но не с пользователями без отношений. Пожалуйста, кто-нибудь может помочь мне с этим? Заранее спасибо!


person Karlos    schedule 05.03.2015    source источник


Ответы (1)


Предлагаемое мной решение имеет следующую логику:

  • Найдите пользователя 1
  • Найти других пользователей, которые не являются пользователем 1
  • Найдите НЕОБЯЗАТЕЛЬНОЕ СОВПАДЕНИЕ для пути между user1, напитком и текущим повторение другого пользователя

Это основано на следующем тестовом графике:

http://console.neo4j.org/r/xc3cqt

Запрос:

MATCH (u:User { id:1 })
MATCH (o:User)
WHERE o <> u
OPTIONAL MATCH (u)-[r:LIKES]->(d)<-[:LIKES]-(o)
RETURN o.id, count(r) as c, collect(DISTINCT (d.name)) AS drink

Результат для предоставленного графика:

o.id    c           drink
2       1           [Cola]
5       1           [Tea]
4       0           []
3       2           [Beer, Cola]
6       0           []
person Christophe Willemsen    schedule 05.03.2015
comment
Работает как шарм! В конце концов, решение было довольно простым. Большое спасибо! - person Karlos; 06.03.2015