【问题标题】:Data Modeling issue with Neo4jNeo4j 的数据建模问题
【发布时间】:2017-07-29 20:00:49
【问题描述】:

我对 Neo4j 非常陌生,但它让我很兴奋。但是,我在尝试对以下 CSV 文件形式的数据进行建模时遇到了困难。

ID      Document    Word
123     Book        Potter,Love,Bond
124     Book        Love,Game
134     Pad         Game,Hate
111     BB          Hate,Level,Awesome
109     Feat        Awesome

理想情况下,我希望将 ID 作为每个节点的唯一元素,将 Document 列作为节点属性之一,并将所有单词作为单独的节点附加到每个 ID 并具有关系 HAS。所以 Love 将与 ID 123 和 124 相关

任何关于密码查询的帮助都会很棒

【问题讨论】:

    标签: neo4j


    【解决方案1】:

    首先在文档节点和单词节点上创建一个约束

    CREATE CONSTRAINT ON (d:Document) ASSERT d.id IS UNIQUE
    
    CREATE CONSTRAINT ON (w:Word) ASSERT d.name IS UNIQUE
    

    我猜你正在使用LOAD CSV

    LOAD CSV WITH HEADERS FROM "url" as row
    MERGE (d:Document{id:row.ID})
    ON CREATE SET d.type = row.Document
    with d,split(row.Word,",") as words
    UNWIND words as word    
    MERGE (w:Word{name:word})
    MERGE (d)-[:HAS]->(w)
    

    【讨论】:

    • 感谢您的回复。只是有几件事,那一定是错别字。但我无法解决由于它们引起的错误 1. 第二个 CREATE 约束语句似乎需要 w.name 而不是 d.name 2. MERGE (d:Document{row.ID}) 语句给我一个错误“输入时没有可行的替代方案......”看着下一次合并,我用 id 替换了行。但这引发了另一个错误,如下所示:“变量id未定义(第2行,第21列(偏移量:60))“合并(d:Document {d:id})”。任何帮助都会很棒。谢谢跨度>
    • 编辑了答案...密码很好,只是取决于你的 csv 是什么样子
    猜你喜欢
    • 2015-02-23
    • 1970-01-01
    • 2012-10-10
    • 1970-01-01
    • 2017-09-18
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多