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)
возвращает количество этих узлов.