Neo4J, как подсчитать всех потомков одного предка для указанного типа отношений

Предоставляет ли Neo4j собственный метод запроса для поиска и подсчета всех потомков узла для указанного типа отношения, такого как REFERRED? Я пытаюсь создать систему, чтобы записывать тип отношений "A-B" для каждого реферала. Требуется в режиме реального времени подсчитать все ссылки от А до дна, вызванные А. Изображение может выглядеть так:

        A
       / \
      B   C
     / \  /\
    D  E F  G
   / \  / \  \ 
  M   N O  P  Q

ЛЮБОЕ предложение, пожалуйста?

Спасибо!

1 ответ

Вы можете использовать язык запросов Cypher для исследования графов Neo4j; и, конечно, с Cypher вы можете создать запрос, чтобы дать вам ответ на свой вопрос.

Если предположить, что для вашего вопроса у узла A есть свойство id uid='A', а тип отношения 'Referred', тогда запрос может выглядеть следующим образом:

MATCH ({uid:'A'}) -[:Referred *1..]-> (n) RETURN COUNT(DISTINCT n)

Здесь первая часть

MATCH ({uid:'A'}) 

указывает отправную точку для вашего запроса. Вторая часть

-[:Referred *1..]->

описывает, какие отношения следовать. Следующая часть

(n)

называет конечные узлы для вашего запроса и, наконец,

RETURN COUNT(DISTINCT n)

возвращает количество этих узлов.

Другие вопросы по тегам