#neo4j
#neo4j
Вопрос:
У меня есть два столбца в файле csv, emp_id
и mngr_id
. Взаимосвязь такова (emp_id)-[:WORKS_UNDER]->(mngr_id)
. Я хочу объединить все те узлы, где emp_id=mngr_id . Как это сделать при создании самих узлов?
Комментарии:
1. Можете ли вы уточнить, какой импортер вы используете? Или это ЗАГРУЗКА CSV из Cypher?
Ответ №1:
Если я правильно понимаю, вы хотите убедиться, что вы избегаете создания повторяющихся отношений при переборе данных CSV и избегаете ввода отношений, в которых человек работает на себя.
Чтобы избежать создания отношений, в которых emp_id
и mngr_id
идентифицировать одного и того же человека, я бы предложил фильтровать CSV перед его обработкой для ввода данных. Должно быть намного проще опустить любые строки в файле CSV, где emp_id
и mngr_id
имеют одинаковое значение, прежде чем передавать его в Neo4j.
Далее, если вы используете Cypher для импорта, может быть полезно что-то вроде этого:
MERGE (emp:Person{id:'emp_id'}) MERGE (mgr:Person{id:'mngr_id'}) MERGE (emp)-[:WORKS_UNDER]->(mgr) RETURN emp,mgr
Обратите внимание, что если вы выполняете приведенный выше запрос несколько раз в операторе блока, вам понадобятся уникальные идентификаторы для emp
и mgr
в каждом запросе.
Слияние хорошо объясняется в документах Neo4j: http://docs.neo4j.org/chunked/stable/query-merge.html