Вы можете использовать графические алгоритмы плагин и, в частности, алгоритм подключенных компонентов , чтобы пометить все изолированные подграфы в вашем графе, а затем экспортировать их и сгруппировать их позже при экспорте по заданному идентификатору.
Пример:
создать примерный график
MERGE (nAlice:User {id:'Alice'})
MERGE (nBridget:User {id:'Bridget'})
MERGE (nCharles:User {id:'Charles'})
MERGE (nDoug:User {id:'Doug'})
MERGE (nMark:User {id:'Mark'})
MERGE (nMichael:User {id:'Michael'})
MERGE (nAlice)-[:FRIEND]->(nBridget)
MERGE (nAlice)-[:FRIEND]->(nCharles)
MERGE (nMark)-[:FRIEND]->(nDoug)
MERGE (nMark)-[:FRIEND]->(nMichael);
Запуск подключенных компонентов(unionFind) алгоритм и возврат узлов в одном и том же подграфе:
CALL algo.unionFind.stream('User', 'FRIEND', {})
YIELD nodeId,setId
RETURN setId,collect(algo.getNodeById(nodeId)) AS nodes_from_specific_subgraph
Это вернет:
╒═══════╤══════════════════════════════════════════════════╕
│"setId"│"specific_subgraph" │
╞═══════╪══════════════════════════════════════════════════╡
│4 │[{"id":"Doug"},{"id":"Mark"},{"id":"Michael"}] │
├───────┼──────────────────────────────────────────────────┤
│0 │[{"id":"Alice"},{"id":"Bridget"},{"id":"Charles"}]│
└───────┴──────────────────────────────────────────────────┘