将数组从CSV导入到Neo4j的对象
问题描述:
我有一个需要迁移到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代码应该如何获得这些元素?
答
您可以使用JSON作为Cypher查询的参数。有几个这样的示例here和here。
随着你的例子是这样的:
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
谢谢,威廉!我会看看这个! –