我有一个包含.json文件的文件夹。每个文件如下所示:
{"data":
[{"status":0,
"timestamp":...
},
{"status":0,
"timestamp":...
},{...
}],
"otherinfos":"random"
}
我需要做的是在集合中导入数据数组的内容。文件大约是10Mo,文件夹包含数千个文件...我尝试了"mongoimport"命令,但它插入了整个对象,而不是"data"数组中可用的所需元素列表。有没有办法从 mongo 中的 json 文件导入数组?是否有开箱即用的解决方案可以从文件夹中导入多个文件?
谢谢
安东尼
PS :我做了一个小的java软件来读取每个文件,并从mongo中的数组中导入对象列表,但经过数周的计算,我很想听到更好的解决方案。
编辑:我希望我的mongoDB数据像这样存储,每个状态和时间戳作为一个单独的文档:
{
"status":0,
"timestamp":...
},
{
"status":0,
"timestamp":...
},
{...
}
因此,例如,我可以请求时间戳并获取状态。我有十亿个这样的条目。
您可以分两阶段进行:
- 使用 mongoimport 将每个 json 文件中的数据加载到临时保留集合中;这应该相当快。
- 使用聚合将数据转换为离散文档,并使用 $out 运算符将每个文档保存到新集合中
聚合命令可能如下所示:
db.tempcollection.aggregate([
{ $unwind: "$data" },
{ $project: {
_id: 0,
"status" : "$data.status",
"timestamp" : "$data.timestamp"
}
},
{ $out: "newcollection" }
]);
这可能会很快被处理,因为它可以由MongoDB本身在数据库服务器上完成;但是,可能值得对一个小数据样本进行一些性能测试来找出答案。