我有一个大型JSON文件(大约20,000行),我需要导入到mongoDB。我之前导入了一个类似的数据集,但没有破坏shell中mongo的4096个字符限制。
我试过跑:
db.machines.insert([DATA HERE]);
- 但这打破了角色限制
我也尝试过跑步:
mongoimport --collection machines --file data.json
然而,这仅导入一个文档。
我也尝试将db.machines.insert([DATA HERE]);
保存到JS文件中并运行mongo insert.js
然而,文件没有出现在集合
中以下是一些示例数据,大约有1000个文档需要添加到集合中:
servers: {
"host2": {
"hostname": "1",
"description": "",
"cluster": "1",
"type": "Virtual",
"os": "RHEL 6.3",
"idc": "PKY",
"environment": "PROD",
"deviceclass": "server",
"cores": "8",
"memory": "16",
"roles": ["ATG-WEB"]
},
"host1": {
"hostname": "1",
"description": "",
"cluster": "1",
"type": "Virtual",
"os": "RHEL 6.3",
"idc": "PKY",
"environment": "PROD",
"deviceclass": "server",
"cores": "8",
"memory": "16",
"roles": ["ATG-WEB"],
}
}
我的想法已经用完了!
答案 0 :(得分:0)
我已经使用mongoImport而没有大数据(少数Gb)的问题。 您的JSON结构看起来不正确。 请先验证您的JSON:https://jsonformatter.curiousconcept.com/
之后,你有2个解决方案:
解决方案1:
将您的JSON结构更改为对象数组。 您的JSON结构不是对象数组(将由Document表示)。 你应该这样做:
[{
"hostname": "1",
"description": "",
"cluster": "1",
"type": "Virtual",
"os": "RHEL 6.3",
"idc": "PKY",
"environment": "PROD",
"deviceclass": "server",
"cores": "8",
"memory": "16",
"roles": ["ATG-WEB"]
},
{
"hostname": "2",
"description": "",
"cluster": "1",
"type": "Virtual",
"os": "RHEL 6.3",
"idc": "PKY",
"environment": "PROD",
"deviceclass": "server",
"cores": "8",
"memory": "16",
"roles": ["ATG-WEB"]
}]
解决方案2:
如果可以的话,尝试使用CSV格式的MongoImport,它也很好用。一行按文件插入。