Wanneer u MongoDB gebruikt, kunt u mongoimport
. gebruiken om documenten in een collectie te importeren. mongoimport
is een opdrachtregelprogramma dat inhoud importeert uit een uitgebreid JSON-, CSV- of TSV-bestand. Het importbestand kan zijn gemaakt door mongoexport
of een ander exporthulpprogramma.
Dit artikel geeft voorbeelden van het importeren van een CSV-bestand in MongoDB.
Voorbeeld
Stel dat we het volgende CSV-bestand hebben met de naam pets.csv
:
_id,name,type 1,"Wag","Dog" 2,"Bark","Dog" 3,"Meow","Cat"
De volgende opdracht importeert het CSV-bestand in MongoDB:
mongoimport --db=PetHotel --type=csv --headerline --file=pets.csv
In dit geval heb ik geen verzameling gespecificeerd om het in te importeren, dus heeft het een verzameling gemaakt met dezelfde naam als het bestand (pets
).
Controleer de resultaten
Laten we de collectie eens bekijken.
db.pets.find()
Resultaat:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
We kunnen zien dat de documenten zijn geïmporteerd zoals verwacht.
CSV-bestanden zonder kolomkoppen
In het vorige voorbeeld gebruikten we de --headerline
parameter om aan te geven dat de eerste regel moet worden gebruikt voor de veldnamen.
Als uw CSV-bestand geen kopregel bevat, moet u de --fields
gebruiken parameter of de --fieldFile
parameter om de veldnamen op te geven.
Stel je voor dat ons CSV-bestand de kolomregel niet had en er in plaats daarvan zo uitzag:
1,"Wag","Dog" 2,"Bark","Dog" 3,"Meow","Cat"
We kunnen dan het volgende commando gebruiken om het bestand te importeren:
mongoimport --db=PetHotel --type=csv --fields=_id,name,type --file=pets.csv
Dat heeft hetzelfde resultaat als het vorige voorbeeld.
Geef de collectienaam op
U kunt de --collection
. gebruiken (of -c
) parameter om een verzameling op te geven waarin het bestand moet worden geïmporteerd.
Hier is een voorbeeld van het gebruik van de --collection
parameter om hetzelfde bestand in een andere verzameling te importeren:
mongoimport --db=PetHotel --collection=pets2 --type=csv --fields=_id,name,type --file=pets.csv
Als de collectie nog niet bestaat, wordt deze gemaakt. Als het al bestaat, hangt het importresultaat af van de modus die u gebruikt (hierover later meer).
In ons geval ziet de nieuw gemaakte collectie er als volgt uit:
db.pets2.find()
Resultaat:
{ "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" } { "_id" : 1, "name" : "Wag", "type" : "Dog" }
Laat de verzameling vallen voordat u deze importeert
U kunt de --drop
. gebruiken parameter om een bestaande verzameling te verwijderen met dezelfde naam als degene die u probeert te maken/importeren.
Stel je voor dat we een tweede bestand hebben, genaamd pets2.csv
, met het volgende document:
_id,name,type,weight 4,"Bubbles","Fish",3
Dit is wat er gebeurt als ik dat document importeer naar de pets2
verzameling met behulp van de --drop
optie:
mongoimport --db=PetHotel --collection=pets2 --type=csv --headerline --drop --file=pets2.csv
Uitgang:
2021-01-03T15:05:40.281+1000 connected to: mongodb://localhost/ 2021-01-03T15:05:40.284+1000 dropping: PetHotel.pets2 2021-01-03T15:05:40.336+1000 1 document(s) imported successfully. 0 document(s) failed to import.
Dit vertelt ons dat de verzameling is verwijderd en dat één document is geïmporteerd.
Laten we de collectie eens bekijken:
db.pets2.find()
Resultaat:
{ "_id" : 4, "name" : "Bubbles", "type" : "Fish", "weight" : 3 }
Zoals verwacht is ons nieuwe document het enige in de collectie.
Importmodi
Er zijn verschillende importmodi die u kunt gebruiken met mongoimport
. Deze modi bepalen wat er gebeurt als er al overeenkomende documenten zijn in de collectie waarin u probeert te importeren.
De modi zijn als volgt:
Modus | Beschrijving |
---|---|
insert | Dit is de standaardmodus. In deze modus worden de documenten uit het importbestand ingevoegd. Als er al een overeenkomend document in de collectie bestaat, treedt er een fout op. Een overeenkomend document is een document met dezelfde unieke ID (zoals een overeenkomende _id veld) als een document in het importbestand. |
upsert | Vervangt bestaande documenten in de database door overeenkomende documenten uit het importbestand. Alle andere documenten worden ingevoegd. |
merge | Samenvoegen bestaande documenten die overeenkomen met een document in het importbestand met het nieuwe document. Alle andere documenten worden ingevoegd. |
delete | Verwijdert bestaande documenten in de database die overeenkomen met een document in het importbestand. Alle niet-overeenkomende documenten hebben geen effect. |
Zie de importmodi van mongoimport
voor voorbeelden van elke modus.
Controleer op mongoimport
mongoimport
maakt deel uit van het MongoDB Database Tools-pakket. De MongoDB Database Tools zijn een reeks opdrachtregelhulpprogramma's voor het werken met MongoDB.
Als u niet zeker weet of u over de MongoDB Database Tools/mongoimport
beschikt geïnstalleerd, probeer dan het volgende commando in je Terminal of Command Prompt uit te voeren om te controleren:
mongoimport --version
Als je het hebt, zou je versie-informatie, enz. moeten zien. Als je het niet hebt, kun je de installatie-instructies op de MongoDB-website gebruiken om het op je systeem te installeren.
Waar kunt u mongoimport
uitvoeren Commando's?
U moet mongoimport
. uitvoeren opdrachten vanaf de opdrachtregel van uw systeem (bijvoorbeeld een nieuw Terminal- of opdrachtpromptvenster).
Voer ze niet uit vanuit de mongo
schelp.