1. ホーム
  2. mongodb

mongoimport を使ってファイルから mongodb に json をインポートする

2023-10-02 21:49:21

質問

json_file.jsonがこのような状態になっています。

[
{
    "project": "project_1",
    "coord1": 2,
    "coord2": 10,
    "status": "yes",
    "priority": 7
},
{
    "project": "project_2",
    "coord1": 2,
    "coord2": 10,
    "status": "yes",
    "priority": 7
},
{
    "project": "project_3",
    "coord1": 2,
    "coord2": 10,
    "status": "yes",
    "priority": 7
}
]

これをmongodbにインポートするために以下のコマンドを実行すると。

mongoimport --db my_db --collection my_collection --file json_file.json 

以下のようなエラーが出ます。

Failed: error unmarshaling bytes on document #0: JSON decoder out of sync - data changing underfoot?

コマンドに--jsonArrayフラグを付けると、このようにインポートされます。

imported 3 documents

のようにjson形式で1つの文書にするのではなく、元のファイルにあるように

上記のようなファイルのオリジナルフォーマットでjsonをmongodbにインポートするにはどうしたらよいでしょうか?

どのように解決するのですか?

MongoDB プロジェクトブログの次のリファレンスが、Mongo で配列がどのように動作するかについての洞察を得るのに役立つかもしれません。

https://blog.mlab.com/2013/04/thinking-about-arrays-in-mongodb/

私はそうでなければ、あなたのインポートのフレームと、どちらかです。

a) --jsonArrayフラグを使用して、あなたが言うように、3つの異なるオブジェクトを別々にコレクションにインポートする; または

b) 例えばこのように、1つのオブジェクトの中に完全な配列をカプセル化する。

{
"mydata": 
    [
    {
          "project": "project_1",
          ...
          "priority": 7
    }
    ]
}

HTH