我有一个看起来像这样的csv:
Number,Date,ClientName,ClientSurname,ClientAge,Option1,Option2
1,01/01/2015,John,Foo,24,30,
使用mongoimport我得到
{
"_id":ObjectID(""),
"Number":1,
"date":"01/01/2015",
"ClientName":"John",
"ClientSurname":"Foo",
"ClientAge":24,
"Option1":30,
"Option2": "",
}
我想要的是
{
"_id":ObjectID(""),
"Number":1,
"date":"01/01/2015",
"Client":[{
"ClientName":"John",
"ClientSurname":"Foo",
"ClientAge":24,
}]
"Options":["30"]
}
我在导入之前尝试过验证但是没有用,是否可以更改架构,因为我现在想要导入数据,或者我应该使用其他方法?
答案 0 :(得分:0)
如果您在CSV标题中使用虚线字段名称,mongoimport
将自动为您创建子文档。但是,这不适用于数组。
例如:
$ cat test.csv
Number,Date,Client.Name,Client.Surname,Client.Age,Option.0,Option.1
1,01/01/2015,John,Foo,24,30,
$ mongoimport -d test -c test --drop --headerline --type=csv test.csv
> db.test.find()
{
"_id": ObjectId("5a4f0768c481930d7c589a41"),
"Number": 1,
"Date": "01/01/2015",
"Client": {
"Name": "John",
"Surname": "Foo",
"Age": 24
},
"Option": {
"0": 30,
"1": ""
}
}
要获取Option
数组,您需要进行一些后处理。
或者,您可以使用单独的脚本摄取CSV文件,并使用驱动程序(例如Pymongo)插入MongoDB。这样,您就可以完全控制生成的文档的结构。