Fügen Sie die JSON-Datei in Mongodb ein


81

Ich bin neu bei MongoDB. Nach der Installation von MongoDB unter Windows versuche ich, eine einfache JSON-Datei mit dem folgenden Befehl einzufügen:

C:\>mongodb\bin\mongoimport --db test --collection docs < example2.json

Ich erhalte die folgende Fehlermeldung:

connected to: 127.0.0.1
Fri Oct 18 09:05:43.749 exception:BSON representation of supplied JSON is too large: code FailedToParse: FailedToParse: Field name expected: offset:43
Fri Oct 18 09:05:43.750
Fri Oct 18 09:05:43.750 exception:BSON representation of supplied JSON is too large: code FailedToParse: FailedToParse: Expecting '{': offset:0
Fri Oct 18 09:05:43.751
Fri Oct 18 09:05:43.751 exception:BSON representation of supplied JSON is too large: code FailedToParse: FailedToParse: Field name expected: offset:42
Fri Oct 18 09:05:43.751
Fri Oct 18 09:05:43.751 exception:BSON representation of supplied JSON is too large: code FailedToParse: FailedToParse: Expecting '{': offset:0
Fri Oct 18 09:05:43.751
Fri Oct 18 09:05:43.752 exception:BSON representation of supplied JSON is too large: code FailedToParse: FailedToParse: Field name expected: offset:44
Fri Oct 18 09:05:43.752
Fri Oct 18 09:05:43.752 exception:BSON representation of supplied JSON is too large: code FailedToParse: FailedToParse: Expecting '{': offset:0
Fri Oct 18 09:05:43.752
Fri Oct 18 09:05:43.752 check 0 0
Fri Oct 18 09:05:43.752 imported 0 objects
Fri Oct 18 09:05:43.752 ERROR: encountered 6 error(s)s

example2.json

{"FirstName": "Bruce", "LastName": "Wayne", 
"Email": "bwayne@Wayneenterprises.com"}
{"FirstName": "Lucius", "LastName": "Fox", 
"Email": "lfox@Wayneenterprises.com"}
{"FirstName": "Dick", "LastName": "Grayson", 
"Email": "dgrayson@Wayneenterprises.com"}

Was muss ich tun, um eine neue JSON-Datei in Mongodb zu importieren?


2
Es ist eine Anforderung von mongoimport, dass sich jedes Dokument in einer neuen Zeile befindet.
Samuel O'Malley

2
Sie sollten eine Antwort akzeptieren (ankreuzen), die Ihr Problem löst.
Sumit Kamboj

Antworten:


108

Verwenden

mongoimport --jsonArray --db test --collection docs --file example2.json

Es ist wahrscheinlich wegen der Zeilenumbrüche durcheinander.


Dieser Befehl sollte in dem Verzeichnis ausgeführt werden, in dem 'mongoimport.exe' vorhanden ist. Die JSON-Datei sollte auch in diesem Verzeichnis vorhanden sein.
Samdish Arora

Der Befehl sollte im Ordner data / db ausgeführt werden, es sei denn, Sie erhalten eine Fehlermeldung.
Zeinab

55

Der folgende Befehl hat bei mir funktioniert

mongoimport --db test --collection docs --file example2.json

als ich das zusätzliche Zeilenumbruchzeichen vor dem EmailAttribut in jedem der Dokumente entfernte.

example2.json

{"FirstName": "Bruce", "LastName": "Wayne", "Email": "bwayne@Wayneenterprises.com"}
{"FirstName": "Lucius", "LastName": "Fox", "Email": "lfox@Wayneenterprises.com"}
{"FirstName": "Dick", "LastName": "Grayson", "Email": "dgrayson@Wayneenterprises.com"}

36

Das hat bei mir funktioniert - (von Mongo Shell)

var file = cat('./new.json');     # file name
use testdb                        # db name
var o = JSON.parse(file);         # convert string to JSON
db.forms.insert(o)                # collection name

So cool. Verwendung der Mongo-Shell als Interpreter für das Betriebssystem und Verwendung von "bash" -Befehlen als Funktionen. Ich wusste nicht einmal, dass Mongo so auf den Dateibaum zugreifen kann. Vielen Dank!
Rea Haas

15

Verwenden Sie beim Importieren der JSON-Datei den folgenden Befehl

C:\>mongodb\bin\mongoimport --jsonArray -d test -c docs --file example2.json

3

Die folgenden zwei Möglichkeiten funktionieren gut:

C:\>mongodb\bin\mongoimport --jsonArray -d test -c docs --file example2.json
C:\>mongodb\bin\mongoimport --jsonArray -d test -c docs < example2.json

Wenn sich die Sammlungen unter einem bestimmten Benutzer befinden, können Sie sie verwenden -u -p --authenticationDatabase



1

Diese Lösung gilt für Windows-Computer.

  1. MongoDB benötigt ein Datenverzeichnis zum Speichern von Daten. Standardpfad ist C:\data\db. Falls Sie das Datenverzeichnis nicht haben, erstellen Sie eines in Ihrem Laufwerk C:. (PS: data \ db bedeutet, dass sich im Verzeichnis 'data' ein Verzeichnis mit dem Namen 'db' befindet.)

  2. Platzieren Sie den zu importierenden JSON in diesem Pfad : C:\data\db\.

  3. Öffnen Sie die Eingabeaufforderung und geben Sie den folgenden Befehl ein

    mongoimport --db databaseName --collections collectionName --file fileName.json --type json --batchSize 1

Hier,

  • Datenbankname: Ihr Datenbankname
  • Sammlungsname: Ihr Sammlungsname
  • Dateiname: Name Ihrer JSON-Datei, die sich im Pfad C: \ data \ db befindet
  • batchSize kann eine beliebige Ganzzahl nach Ihren Wünschen sein

1
Hat mir ein paar geholfen! Danke
Filipbarak

0

In MS Windows muss der Befehl mongoimport an einer normalen Windows-Eingabeaufforderung ausgeführt werden, nicht an der Eingabeaufforderung von mongodb.


Gleiches gilt für Unix. mongoimport muss von einem normalen Terminal als mongod ausgeführt werden.
Doel


0

In MongoDB Zum Einfügen von Json-Array-Daten aus einer Datei (von einem bestimmten Speicherort eines Systems / PCs) mit dem Befehl mongo shell. Während der Ausführung unter dem Befehl sollte der Befehl in einer Zeile stehen.

var file = cat ('I: /data/db/card_type_authorization.json'); var o = JSON.parse (Datei); db.CARD_TYPE_AUTHORIZATION.insert (o);

JSON-Datei: card_type_authorization.json

[{
"code": "visa",
"position": 1,
"description": "Visa",
"isVertualCard": false,
"comments": ""
},{
    "code": "mastercard",
    "position": 2,
    "description": "Mastercard",
    "isVertualCard": false,
    "comments": ""
}]

0

Öffnen Sie die Eingabeaufforderung separat und überprüfen Sie:

C: \ mongodb \ bin \ mongoimport --db Datenbankname - Sammlung Sammlungsname <Dateiname.json

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.