Наибольшая сортировка по взаимным связям neo4j

#neo4j #cypher

#neo4j #шифр

Вопрос:

Я хочу создать запрос в cypher, но у меня проблемы с одной частью, вот как это должно выглядеть

  • Выберите один поток
  • Получить пользователей, которые взаимодействовали с этим потоком
  • Получите верхние потоки, отсортированные по количеству пользователей, которые взаимодействовали с обоими потоками (первый предварительно выбранный и второй, который я ищу)

Пример графа

Ответ №1:

Функция агрегирования COUNT должна помочь. Что-то вроде этого:

 MATCH (t1:Thread)<-[:USED]-(u:User)-[:USED]->(t2:Thread)
WHERE t1.id = 123
RETURN t1, t2, COUNT(DISTINCT u) AS cnt
ORDER BY cnt DESC
  

DISTINCT Параметр, который влечет за собой накладные расходы, следует использовать только в том случае, если User возможно, чтобы a был связан с одной и той же парой потоков несколько раз.

Комментарии:

1. Спасибо, я проверю это