如何将两个neo4j节点的数据重构为关系?

时间:2016-02-24 03:51:59

标签: neo4j cypher

我正在使用图形数据库(neo4j)进行实验。我有两个csv,我导入neo4j数据存储区。我对neo术语有点不满意;所以请原谅我让我们说:

客户(AccountNumber,客户名称)和 CustomerGroups(AccountNumber,GroupName)。

  1. 我想创建一个名为groups的新节点,它由来自CustomerGroups的不同GroupName组成。我称之为集团。

  2. 然后我想创建关系" HAS_GROUP"使用CustomerGroups中的公共AccountNumber从客户到组。

  3. 完成上述操作后,我可以删除不再需要的CustomerGroups。

  4. 我只是坚持语法。我可以通过以下方式从CustomerGroups获取不同的组:

    MATCH (n:CustomerGroups) distinct n.GROUP_NAME
    

    我得到了大约50个不同的组,但无法确定如何将create语句添加到结果中并创建g:组{GroupName:n.GROUP_NAME}

    然后我知道我的后续问题是如何使用带有普通帐号的旧表格对新组进行MATCH。

    仅供参考:我已将两个节点中的AccountNumber编入索引。 Customer和CustomerGroups都有超过500万个节点。对于笔记本电脑来说不错(使用neo4j-import导入2分钟)。我印象深刻!

    感谢您提供任何帮助!

1 个答案:

答案 0 :(得分:0)

您应该能够定义要在CustomerGroups中创建的关系,而不是创建neo4j-import标签并为其创建节点。它肯定会快得多。参见:

http://neo4j.com/docs/stable/import-tool-header-format.html

对于你的问题,你可能会做类似的事情:

MATCH (cg:CustomerGroup)
MATCH (customer:Customer {AccountNumber: cg. AccountNumber}), (group:Group {GroupName: cg.GroupName})
CREATE (customer)-[:IN_GROUP]->(group)

您一定要确保首先在:Customer(AccountNumber):Group(GroupName)上设置索引。但即使这样,它仍然会比作为初始导入的一部分要慢得多。

此外,您可能希望MERGE代替CREATE