大型MongoDB导入 - 超过4096个字符限制

时间:2015-09-15 08:25:09

标签: json mongodb

我有一个大型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"],
}
}

我的想法已经用完了!

1 个答案:

答案 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,它也很好用。一行按文件插入。