我在csv文件中有两列,emp_id
和mngr_id
。关系是(emp_id)-[:WORKS_UNDER]->(mngr_id)
。我想合并所有那些emp_id = mngr_id的节点。如何在创建节点的同时做到这一点?
答案 0 :(得分:1)
如果我理解正确,您需要确保在迭代CSV数据时避免创建重复关系,并避免输入某个人为自己工作的关系。
为避免创建emp_id
和mngr_id
标识同一个人的关系,我建议在处理CSV之前过滤CSV以输入数据。在将emp_id
和mngr_id
传递给Neo4j之前,MERGE (emp:Person{id:'emp_id'}) MERGE (mgr:Person{id:'mngr_id'}) MERGE (emp)-[:WORKS_UNDER]->(mgr) RETURN emp,mgr
和emp
是相同的值,可以更容易省略CSV文件中的任何行。
接下来,如果你使用Cypher进行导入,那么这样的事情可能会有用:
mgr
请注意,如果您在阻止声明中多次运行上述查询,那么您在每个查询中都需要{{1}}和{{1}}的唯一标识符。
在Neo4j文档中解释了合并:http://docs.neo4j.org/chunked/stable/query-merge.html