避免在具有相同值neo4j的节点上进行重复

时间:2014-06-18 12:33:37

标签: neo4j

我在csv文件中有两列,emp_idmngr_id。关系是(emp_id)-[:WORKS_UNDER]->(mngr_id)。我想合并所有那些emp_id = mngr_id的节点。如何在创建节点的同时做到这一点?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您需要确保在迭代CSV数据时避免创建重复关系,并避免输入某个人为自己工作的关系。

为避免创建emp_idmngr_id标识同一个人的关系,我建议在处理CSV之前过滤CSV以输入数据。在将emp_idmngr_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