Получение количества отключенных кластеров, которые удовлетворяют условию в Neo4J - PullRequest
2 голосов
/ 06 июня 2019

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

Просто в качестве примера я могу вернуть все узлы с выполнением условия:

match (p1:TYPE1)-[r:RELATIONSHIP_1]-(p2:TYPE1)
return p1, p2, r

Этот запрос дает изображение, похожее на прикрепленное enter image description here.

В связи с этим я бы хотел получить число «отключенных»кластеры только в соответствии с узлами и отношениями из запроса (поэтому на изображении это будет 27 отдельных кластеров)

1 Ответ

2 голосов
/ 07 июня 2019

Алгоритм Connected Components плагина neo4j Graph Algorithms должен быть полезен для вашего случая использования.

Например, этот запрос должен создать строку для каждого подключенного компонента в вашем графике:

CALL algo.unionFind.stream('User', 'FRIEND', {}) YIELD nodeId, setId
RETURN algo.asNodes(COLLECT(nodeId)) AS users, setId

Каждая строка будет иметь коллекцию User узлов в этом компоненте вместе с уникальным идентификатором компонента (если он вам нужен).

...