name - sql to neo4j



Запрос Cypher для отображения всех отключенных графиков Neo4j graph DB? (1)

База данных Neo4j содержит около 50 000 узлов и> 50 000 отношений. Существует главный граф, который содержит большинство узлов. Но есть несколько графиков, которые еще не соединены с основным графиком.

Чтобы связать различный граф с одним крупным основным графиком, я намерен использовать запрос Cypher для перечисления путей или коллекций подключенных узлов, упорядоченных по их размеру (сначала самый большой несвязанный граф).

В stackoverflow есть несколько сообщений, например:

Вот небольшой примерный граф, который представляет проблему: примерный граф Neo4j Console

Следующий запрос Cypher не решает проблему, но является отправной точкой. В нем перечислены все те узлы, которые не привязаны к основному графику. Он пропускает объединение этих узлов в коллекции узлов. Он работает на небольшом графике. На большом графике он возвращает «undefined» ... после запуска более 10 минут.

START s=node(3), n=node(*) 
MATCH s-[*1..10]-m 
WITH collect(m) as members, n 
WHERE NOT n in members 
RETURN DISTINCT id(n), n.name? 
ORDER BY id(n) 
LIMIT 10;

Как использовать Cypher для перечисления всех отключенных (под) графиков?

Окружающая среда: - Neo4j - Ядро базы данных графов 1.9.M05 - среда выполнения Java-SE (сборка 1.7.0_17-b02)


это не полный ответ, но я думаю, что вам следует (если можно) отбросить рамки Traversal для этого варианта использования.

Cypher - это сопоставление определенных частей графика, независимо от того, как вы хотите это сделать. Структура Traversal действительно о том, КАК вы хотите пройти график.

В вашем случае обход более важен, чем график. Вот что я предлагаю, используйте Traversal Framework для

  1. группы ярлыков узлов так, как вы хотите
  2. агрегировать результаты на карте (или что-то более развитое), пока вы на ней