2016-02-04 118 views
0

我有一个需要迁移到Neo4j的mongo集合。为此,我会将其导出为CSV。然后,我将使用Cypher将结果CSV导入Neo4j。集合中的文档具有一个包含数组内部对象的数组。看看上面的JSON:将数组从CSV导入到Neo4j的对象

"services" : [ 
      { 
       "max_id" : "646767779849326594", 
       "log" : [ 
        { 
         "date" : 1443024000, 
         "steps" : 6 
        }, 
        { 
         "date" : 1442512800, 
         "steps" : 1 
        } 
       ], 
       "service" : "home_timeline" 
      }, 
      { 
       "max_id" : 0.0, 
       "log" : [ 
        { 
         "date" : 1443024000, 
         "steps" : 4 
        }, 
        { 
         "date" : 1442512800, 
         "steps" : 1 
        } 
       ], 
       "service" : "user_timeline" 
      }, 
      { 
       "max_id" : 0.0, 
       "log" : [ 
        { 
         "date" : 1443024000, 
         "steps" : 6 
        }, 
        { 
         "date" : 1442512800, 
         "steps" : 1 
        } 
       ], 
       "service" : "mentions_timeline" 
      } 
     ] 

我怎样才能将它导入到Neo4?我已经找到了导入数组的解决方案。但我没有发现类似于我的问题。 CSV的标题应该如何? Cypher代码应该如何获得这些元素?

回答

1

您可以使用JSON作为Cypher查询的参数。有几个这样的示例herehere

随着你的例子是这样的:

WITH {json} AS data 
UNWIND data.services AS service 
// Insert data for each service. 
MERGE (s:Service { "service_name": service.service}) 
SET s.max_id = service.max_id 
FOREACH (log IN service.logs | CREATE (l:Log {date: log.date, steps: log.steps})<-[:LOGGED]-(s)) 

也有从MongoDB的文档数据模型转换数据的Neo4j,你可能会发现有用的属性图模型的工具:https://github.com/neo4j-contrib/neo4j_doc_manager

+0

谢谢,威廉!我会看看这个! –