我有一堆JSON文件(例如a.json,b.json,c.json)。我知道我可以使用
将它们中的每一个导入MongoDB集合mongoimport -d db -c collection --file x.json --jsonArray
我的收藏将包含三个jsons。但我想让jsons成为识别它们的键的值。也就是说,而不是让我的集合包含以下内容:
a.json, b.json, c.json
我想:
{ "a" : a.json }, { "b" : b.json }, { "c" : c.json }
Mongo的insert()方法中是否有一些功能如下: db.collection.insert({“a”:a.json})?
答案 0 :(得分:1)
您可以使用jq
JSON解析器将3个文件与所需格式合并,然后使用mongoimport
导入:
jq -s '{"a":.[0],"b":.[1],"c":.[2] }' a.json b.json c.json
顺便说一句,即使你的json文件有不同的根元素(json对象或数组),它也会工作。结果如下:
{
"a": [
{
"field": "2"
},
{
"field": "5"
}
],
"b": [
{
"field": "2"
},
{
"field": "1"
}
],
"c": [
{
"field": "3"
},
{
"field": "2"
}
]
}
您可以将其存储到新的json文件中,然后将其导入mongoDB:
jq -s '{"a":.[0],"b":.[1],"c":.[2] }' a.json b.json c.json > input.json
mongoimport -d db -c testDB --file input.json
结果将是:
{ "_id" : ObjectId("58b2fa56fa97671e9876afa8"), "a" : [ { "field" : "2" }, { "field" : "5" } ], "b" : [ { "field" : "2" }, { "field" : "1" } ], "c" : [ { "field" : "3" }, { "field" : "2" } ] }