wake-up-neo.com

Die richtige Art, Json-Dateien in Mongo zu importieren

Ich habe versucht, Mongo mit einigen importierten Daten zu verwenden, kann sie jedoch nicht ordnungsgemäß mit meiner Dokumentbeschreibung verwenden.

Dies ist ein Beispiel für die .json-Datei, die ich mit mongoimport importiere: https://Gist.github.com/2917854

mongoimport -d test -c example data.json

Ich habe festgestellt, dass mein gesamtes Dokument in ein einzigartiges Objekt importiert wurde, obwohl für jedes Geschäft ein Objekt erstellt wurde.

Wenn ich also einen Shop oder etwas suche, das ich abfragen möchte, wird das gesamte Dokument zurückgegeben.

db.example.find({"shops.name":"x"})

Ich möchte in der Lage sein, die Datenbank abzufragen, um Produkte anhand der ID zu erhalten, indem Punktnotation verwendet wird.

db.example.find({"shops.name":"x","categories.type":"shirts","clothes.id":"1"}

Das Problem ist, dass das gesamte Dokument wie ein einzelnes Objekt importiert wird. Die Frage ist: wie
Muss ich das Objekt importieren, um mein gewünschtes Ergebnis zu erhalten?

38
Nahikariii

Dokumente Beachten Sie Folgendes:

Dieses Dienstprogramm verwendet eine einzelne Datei, die 1 JSON/CSV/TSV-Zeichenfolge pro Zeile enthält, und fügt sie ein.

In der Struktur, die Sie verwenden, werden die Fehler auf der Gist behoben. Sie importieren im Wesentlichen ein Dokument mit nur dem Feld shops.

Importieren Sie die Daten in separate Shop-Dokumente, und importieren Sie sie mit etwas wie (Shops als Sammlungsname sind sinnvoller als example):

mongoimport -d test -c shops data.json

und dann kannst du abfragen wie:

db.shops.find({"name":x,"categories.type":"shirts"})
37
Eren Güven

Es gibt einen Parameter --jsonArray:

Akzeptieren Sie den Import von Daten, die mit mehreren MongoDB-Dokumenten in einem einzigen JSON-Array angegeben sind

Mit dieser Option können Sie ein Array füttern, sodass Sie nur die äußere Objektsyntax entfernen müssen, d. H. Alles am Anfang bis einschließlich "shops" : und } am Ende.

Ich benutze ein kleines Werkzeug namens jq , das das Array von der Kommandozeile extrahieren kann:

./jq '.shops' shops.json
23
The Nail

IMPORT VON JSON

mongoimport --db "databaseName" --collection "collectionName" --type json --file "fileName.json" --jsonArray

Das JSON-Format sollte in diesem Format vorliegen. (Array von Objekten)

[
    { name: "Name1", msg: "This is msg 1" },
    { name: "Name2", msg: "This is msg 2" },
    { name: "Name3", msg: "This is msg 3" }
]

IMPORT VON CSV

mongoimport --db "databaseName" --collection "collectionName" --type csv --file "fileName.csv" --headerline

Mehr Info

https://docs.mongodb.com/getting-started/Shell/import-data/

8
Mahesh K

JSON importieren

Mit dem Befehl mongoimport können wir die von Menschen lesbaren JSON in eine bestimmte Datenbank und eine Sammlung importieren. Um JSON-Daten in eine bestimmte Datenbank und eine Sammlung zu importieren, geben Sie mongoimport -d databaseName -c collectionName jsonFileName.json ein.

0
student