2017-02-01 4 views
1

Я использую neo4j 3.1 с java 8, и я хочу извлечь подключенный подграф, чтобы сохранить его в качестве тестовой базы данных. Можно ли это сделать и как? Как это сделать с предложением Return, которое возвращает результат. Таким образом, мне пришлось создавать новые узлы и отношения или просто экспортировать подграф и помещать его в новую базу данных.Извлечение подграфа в neo4j с использованием запроса cypher

Как извлечь связанный подграф, так как у меня есть отключенный граф.

Спасибо

ответ

1

Есть две части этого ... приобретающие связный подграф, а затем найти средства для экспорта.

APOC Procedures похоже, что он может охватывать оба эти. Подход в this answer с использованием расширителя пути должен предоставить вам все узлы в подключенном подграфе (если тип отношения не имеет значения, оставьте параметр relationshipFilter).

Следующий шаг - получить все отношения между всеми этими узлами. Функция apoc.algo.cover() APOC в graph algorithms section должна выполнить это.

Нечто подобное (при условии, что это после запроса подграфа и subgraphNode находится в области видимости для столбца отдельных узлов подграфа):

... 
WITH COLLECT(subgraphNode) as subgraph, COLLECT(id(subgraphNode)) as ids 
CALL apoc.algo.cover(ids) YIELD rel 
WITH subgraph, COLLECT(rel) as rels 
... 

Теперь, когда у вас есть коллекции обоего узлов и отношений в подграф, вы можете экспортировать их.

Процедуры APOC several means of exporting, от CSV до CypherScript. Вы должны иметь возможность найти вариант, который будет работать для вас.

+0

Я установил АПБ и я пытаюсь протестировать n пример, чтобы раскрыть, как он работает, так как это первый раз, когда я использовал его Спасибо – MAYA

+0

Я пробовал это, и он отлично работает. Однако я хотел бы знать значение этого параметра: MaxLevel и уникальность: «Node_global»? – MAYA

+0

Несомненно. 'maxLevel' и' minLevel' определяют минимальное и максимальное количество обходов при прохождении. Пути должны быть возвращены только тогда, когда длина пути (количество обходов от исходного узла) находится между уровнями, указанными ... – InverseFalcon

0

Вы также можете использовать neo4j-shell для извлечения результата запроса в файл и использовать этот же файл повторно импортировать его в базу данных Neo4j:

[email protected] ~/d/_/310> ./bin/neo4j-shell -c 'dump MATCH (n:Product)-[r*2]->(x) RETURN n, r, x;' > result.cypher 

проверить файл

[email protected] ~/d/_/310> cat result.cypher 
begin 
commit 
begin 
create (_1:`Product` {`id`:"product123"}) 
create (_2:`ProductInformation` {`id`:"product123EXCEL"}) 
create (_3:`ProductInformationElement` {`id`:"product123EXCELtitle", `key`:"title", `value`:"Original Title"}) 
create (_5:`ProductInformationElement` {`id`:"product123EXCELproduct_type", `key`:"product_type", `value`:"casual_bag"}) 
create (_1)-[:`PRODUCT_INFORMATION`]->(_2) 
create (_2)-[:`INFORMATION_ELEMENT`]->(_3) 
create (_2)-[:`INFORMATION_ELEMENT`]->(_5) 
; 
commit 

Используйте этот файл для подачи другого Neo4j:

[email protected] ~/d/_/310> ./bin/neo4j-shell -file result.cypher 
Transaction started 
Transaction committed 
Transaction started 
+-------------------+ 
| No data returned. | 
+-------------------+ 
Nodes created: 4 
Relationships created: 3 
Properties set: 8 
Labels added: 4 
52 ms 
Transaction committed 
+0

Я пробовал это, но моя проблема в том, что у меня есть две установки neo4j: - Я установил neo4j.exe и там я создал свою базу данных с py2neo, но в этом не содержится neo4j-shell - я установил neo4j .zip, но он не содержит мою базу данных. Итак, как я могу это решить? – MAYA

+0

Argh не может реально помочь, не использовали Windows, так как динозавры исчезли с земли:/ –

+0

Ok спасибо :) – MAYA

 Смежные вопросы

  • Нет связанных вопросов^_^