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?
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"})
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
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
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.