web-dev-qa-db-ja.com

MongoDB CompassでのJSON入力の予期しない終了

MongoDBコンパスにjson型のデータをインポートしたいのですが、インポート機能でこのエラー「json入力の予期しない終了」が発生します

enter image description here

私のjsonファイルの一部があります

[

    {
    'id' :4,
    'user' : '[email protected]',
    'date1' :'2019-03-01',
    'date2' : '2019-04-01',
    'statut' : 'Good',
     'guest_number' : 4
    }
]
16
OAH

解決策は、すべてのJSONを1行で書き込むことですが、大きなドキュメントがある場合は!!ターミナルでこのコマンドを使用してデータをインポートできるソリューションを見つけました:

mongoimport --jsonArray --db YourDatabase --collection YourCollection --file Yourfile.json
15
OAH

6か月前にこの問題が発生しました。解決策は、すべてのJSONを1行で書き込むことです。 [{"id":4,"user":"[email protected]","date1":"2019-03-01","date2":"2019-04-01","statut":"Good","guest_number":4}]

MongoDB Compassが次のように説明します。

インポート成功!

ただし、ドキュメントはコレクションに表示されないので、jsonを挿入する場合はRobo3Tを使用することをお勧めします。その後、私のようにコンパスを再度使用できます。奇妙なことですが、まだ他の解決策は見つかりませんでした。

[更新]

私はCompassを使用してデータをインポートしますが、最初にCompassからドキュメントをエクスポートして、jsonの記述方法を確認します。

{"_id":{"$oid":"5e4cf105c9ba1a21143d04a2"},"tPreguntas":["Pregunta 1","Pregunta 2","Pregunta 3","Pregunta 4","Pregunta 5"],"tCategorias":[],"tPublico":true,"tFechaCreacion":{"$date":{"$numberLong":"1582100741716"}},"tCodigo":"test1","tTitulo":"Test 1","tDescripcion":"Test de muestreo número uno para comprobar.","tCreadoPor":"[email protected]"}

それは私が最初の投稿で投稿したjson onlineとは異なって見えます。 (たとえば、objectId "$ oid"を見てください)。したがって、そのパターンに従うと、Compassが正常にインポートされます。

7
Schwarz54

この解析エラーは、縮小化を使用して解決できます。したがって、このようにjsonを縮小します。ただし、これを各オブジェクトに対して実行するのは非常に多忙なプロセスです。

そして、このような縮小は私にとってはうまくいきました。

{ 
    "_id" : ObjectId("5b9ecf9a64f634289ca895bb"), 
    "name" : "Mark"
}
{ 
    "_id" : ObjectId("5b9edd9064f634289ca895e4"), 
    "name" : "David"
}

へ:

{"_id":"ObjectId(\"5b9ecf9a64f634289ca895bb\")","name":"Mark"}
{"_id":"ObjectId(\"5b9edd9064f634289ca895e4\")","name":"David"}
5
prisar

この解析エラーは、縮小化を使用して解決できます。したがって、このようにjsonを縮小します。ただし、これを各オブジェクトに対して実行するのは非常に多忙なプロセスです。

{
"_id" : "123456",
"name" :  "stackoverflow"
}

への変更 :

{"_id":"123456","name":"stackoverflow"}

Jsonファイルの内容をコピーし、Mongodb Compassでデータベースを選択して、[データの追加]をクリックしてドロップダウンし、[ドキュメントの挿入]をクリックすると、ダイアログがポップアップ表示され、そこに貼り付けて、[挿入]をクリックします。

1
nivla360

追加 --jsonFormat=canonicalをmongoexportスクリプトに追加します。

mongoexport --db=quotes --collection=quotes  --jsonFormat=canonical --out=data/quotes.json

JSONは、BSONでサポートされるタイプのサブセットのみを直接表すことができます。タイプ情報を保持するために、MongoDBはJSON形式に次の拡張機能を追加します。

ソース

0

JSONの構造が正しくありません。 JSON標準 に関する情報をご覧ください。

値は、二重引用符の文字列、数値、trueまたはfalseまたはnull、またはオブジェクトや配列です。これらの構造は入れ子にすることができます。

単一引用符の代わりに二重引用符を使用してみてください:

JSONバリデーターも役立ちます

[
    {
     "id" : 4,
     "user" : "[email protected]",
     "date1" : "2019-03-01",
     "date2" : "2019-04-01",
     "statut" : "Good",
     "guest_number" : 4
    }
]
0
KristoffDT

この回答 ソリューション 私のために問題を解決しました。フォーマットの問題のようです。

0

これは、行末文字(EOL)の問題です。

Windows環境では、行の終端は通常CR NL(\ r\n)ですが、MongoDB CompassはCR(\ r)のみをサポートしているようです。

Notepad ++でファイルを開き、ツールバーの「すべての文字を表示」トグルを有効にして、現在の行末文字を調べることができます。

この問題を解決するには、[編集]> [EOL変換]> [Macintosh(CR)]を選択します。

0
vi3x

同様の問題がありましたが、ファイルの末尾に追加の改行があることがわかりました。これらを削除すると、問題が修正されました。改行を表示するエディターでファイルを開くことをお勧めします。メモ帳++

0
NickC