2017-06-17 4 views
1

Ich habe einen Mongo-Import-Befehl ausgeführt, um meine JSON-Datei zu importieren, aber alle Daten wurden unter einem einzigen Objekt gespeichert.Mongo-Import speichert alle Daten unter einem einzigen Objekt

mongoimport -d DB NAME -c COLLECTION NAME --type json --file FILE PATH --host MY MONGO LAB HOST --port 27892 -u MYUSER -p MYPASSWORD 

Aber jetzt, wenn ich die db in mongorobot sehen

JSON

{ 
"-Kbr7KouYOL_a9NIAyPV" : { 
"correctas" : [ 1 ], 
"creator_name" : "kk", 
"game_name" : "Elrubius", 
"jugado" : 62, 
"opciones1" : [ "Por usar una pistola falsa" ], 
"opciones2" : [ "Por matar" ], 
"opciones3" : [ "Por robar" ], 
"opciones4" : [ "Por estar tomando alcol" ], 
"preguntas" : [ "Elrubius porque fue detenido" ], 
"premium" : false 
}, 
"-Kbr8RJMSCv95m6TS4Of" : { 
"correctas" : [ 2 ], 
"creator_name" : "CRIATURITA", 
"game_name" : "ELRUBIOSOMG", 
"jugado" : 34, 
"opciones1" : [ "Carlos" ], 
"opciones2" : [ "Ruben" ], 
"opciones3" : [ "Jorge" ], 
"opciones4" : [ "Chavez" ], 
"preguntas" : [ "Como se llama elrubiusomg?" ], 
"premium" : false 
}, 
  • ist falsch, die Daten alle unter einem einzigen Objekt zu speichern?
  • Wie kann ich dies vermeiden?

Dank

+0

Meinst du die JSON-Datei, die ich importiere? Ich habe es bereits hinzugefügt (; –

Antwort

1

Das Problem ist, dass Sie Dokumente in einem einzigen Dokument zusammengefasst.

Ihre Formatierung (Einrückung) verbirgt, was Sie tun. Aber ... das ist, was Sie verwenden, in Ihrer Frage (mit einigen Eigenschaften der Kürze entfernt):

{ 
    "-Kbr7KouYOL_a9NIAyPV": { 
     "creator_name": "kk", 
     "game_name": "Elrubius", 
     "jugado": 62, 
     "premium": false 
    }, 
    "-Kbr8RJMSCv95m6TS4Of": { 
     "creator_name": "CRIATURITA", 
     "game_name": "ELRUBIOSOMG", 
     "jugado": 34, 
     "premium": false 
    } 
} 

Das wird nur geben Ihnen einen Riesen Dokument mit vielen Subdokumente. Und schließlich werden Sie die Größe eines einzelnen Dokuments überschreiten.

Auch die Art und Weise Sie Ihre JSON gebaut, es ist die Erstellung von einzigartigen Eigenschaftsnamen für jedes Dokument:

  • -Kbr7KouYOL_a9NIAyPV
  • -Kbr8RJMSCv95m6TS4Of

Ich bezweifle, dass Ihre Absicht war; Sie werden nie in der Lage sein, darüber abzufragen, da jedes Dokument einen eindeutigen Eigenschaftsnamen hat.

Sie müssen Ihren JSON reparieren, um mehrere separate Dokumente darzustellen. Und fixiere diese eindeutige ID so, dass sie abfragbar ist. Etwas wie:

{ 
    "id": "-Kbr7KouYOL_a9NIAyPV", 
    "creator_name": "kk", 
    "game_name": "Elrubius", 
    "jugado": 62, 
    "premium": false 
} 
{ 
    "id": "-Kbr8RJMSCv95m6TS4Of", 
    "creator_name": "CRIATURITA", 
    "game_name": "ELRUBIOSOMG", 
    "jugado": 34, 
    "premium": false 
} 

Sie können diesen Satz von Dokumenten dann importieren. In diesem Beispiel habe ich eine id-Eigenschaft hinzugefügt. MongoDB erstellt eine eindeutige _id-Eigenschaft, wenn Sie keine angeben. Wenn Sie also die garantiert eindeutige Eigenschaft von MongoDB überschreiben möchten, können Sie im obigen Beispiel id durch _id ersetzen.

+0

Ich weiß, es ist ein bisschen spät, aber wenn ich versuche, einen Import mit einer Syntax wie diese zu machen, wirft es mich fehlgeschlagen Fehler Verarbeitung von Dokument # 1 ungültiges Zeichen {Suche nach Anfang des Objekts Schlüssel Zeichenfolge –

+0

Nicht sicher Genau deshalb haben Sie dieses Problem, aber Sie können auch versuchen, alle Dokumente in der Importdatei in eckige Klammern zu schreiben: '{{doc1}, {doc2} ...]'. Nur zu beachten: Ich habe das genaue Dokumentbeispiel in meinem Antwort und importiert es über Mongoimport, ohne Probleme. –

+0

Ich habe den Befehl die falsche Datei, danke für die schnelle Antwort –

Verwandte Themen