插入MongoDB时使用JSON文件作为值

时间:2017-02-26 15:24:29

标签: json mongodb

我有一堆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})?

1 个答案:

答案 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" } ] }