De MongoDB Database Tools bevatten een hulpprogramma genaamd mongoexport
waarmee u MongoDB-gegevens naar een CSV- of JSON-bestand kunt exporteren.
Dit artikel laat zien hoe u mongoexport
. gebruikt om een MongoDB-verzameling naar een CSV-bestand te exporteren.
Syntaxis
De syntaxis voor mongoexport
gaat als volgt:
mongoexport --collection=<coll> <options> <connection-string>
U moet mongoexport
uitvoeren opdrachten vanaf de opdrachtregel van uw systeem (bijvoorbeeld een nieuw Terminal- of opdrachtpromptvenster).
Voer mongoexport
niet uit commando's van de mongo
schelp.
Een collectie exporteren
De volgende voorbeeldcode exporteert een verzameling uit MongoDB:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --out=data/pets.csv
Hiermee wordt een verzameling geëxporteerd met de naam pets
van het PetHotel
database naar een bestand met de naam pets.csv
in de data/
map.
Als de map niet bestaat, wordt deze gemaakt. Hetzelfde met het bestand. Dit veronderstelt trouwens dat er geen toestemmingsproblemen zijn bij het schrijven van een bestand naar de opgegeven locatie.
In dit voorbeeld heb ik geen host, poort, authenticatie, enz. gespecificeerd, dus het exporteert de verzameling van de MongoDB-instantie die wordt uitgevoerd op het standaard localhost-poortnummer 27017
.
Hieronder vindt u een uitleg van de parameters die we hier hebben opgegeven.
Parameter | Beschrijving |
---|---|
--db of -d | Specificeert de database die de collectie bevat die we willen exporteren. In dit geval heet de database PetHotel . Deze parameter kan ook worden doorgegeven met -d (in plaats van --db ). |
--collection of -c | Specificeert de collectie die we willen exporteren. In dit geval heet de verzameling pets . Deze parameter kan ook worden doorgegeven als -c (in plaats van --collection ). |
--type | Specificeert het geëxporteerde bestandstype. In dit geval specificeren we csv om het naar een CSV-bestand te exporteren. |
--fields | Specificeert de velden die we willen exporteren. We hebben de mogelijkheid om alle velden in de collectie te exporteren, of slechts enkele. Je moet ze hier allemaal vermelden, gescheiden door een komma. Bij het exporteren naar CSV is het opgeven van de veldnamen een vereiste. U kunt dit doen via de --fields parameter of de --fieldFile parameter (daarover later meer). |
--out | Specificeert de naam van het geëxporteerde bestand en waar het zich zal bevinden. Als u geen bestandsnaam opgeeft, mongoexport schrijft gegevens naar standaarduitvoer (stdout ). |
Controleer het geëxporteerde bestand
Laten we controleren of de exportbewerking werkte zoals verwacht.
Laten we eerst de originele collectie eens bekijken.
use PetHotel
db.pets.find()
Resultaat:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 } { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 } { "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 } { "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 } { "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }
We kunnen dus zien dat er 7 huisdieren zijn, allemaal met dezelfde velden die we hebben gespecificeerd in onze exportbewerking.
Laten we nu het geëxporteerde bestand pets.csv
. openen om te zien wat erin zit:
_id,name,type,weight 1,Wag,Dog,20 2,Bark,Dog,10 3,Meow,Cat,7 4,Scratch,Cat,8 5,Bruce,Bat,3 6,Fetch,Dog,17 7,Jake,Dog,30
OK, dus alle gegevens staan zoals verwacht in het geëxporteerde bestand.
Kolomkoppen verwijderen
U zult zien dat het geëxporteerde bestand in het vorige voorbeeld de kolomkoppen bevatte.
Je hebt ook de mogelijkheid om het bestand zonder . te exporteren kolomkoppen. Gebruik hiervoor de --noHeaderLine
parameter.
Voorbeeld:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --noHeaderLine --out=data/pets.csv
Als ik nu het geëxporteerde bestand open, zijn er geen kolomkoppen:
1,Wag,Dog,20 2,Bark,Dog,10 3,Meow,Cat,7 4,Scratch,Cat,8 5,Bruce,Bat,3 6,Fetch,Dog,17 7,Jake,Dog,30
Gebruik een bestand voor de veldnamen
U kunt het --field
. vervangen parameter met de --fieldFile
parameter om de naam op te geven van een bestand dat de veldnamen bevat die u wilt exporteren.
mongoexport --db=PetHotel --collection=pets --type=csv --fieldFile=data/pets_fields.txt --out=data/pets.csv
Het bestand dat de velden bevat, moet de velden bevatten, één per regel.
Dit is wat de pets_fields.txt
bestand zag er voor dit voorbeeld uit:
_id name type weight
Hierdoor zag de inhoud van het geëxporteerde bestand er als volgt uit:
_id,name,type,weight 1,Wag,Dog,20 2,Bark,Dog,10 3,Meow,Cat,7 4,Scratch,Cat,8 5,Bruce,Bat,3 6,Fetch,Dog,17 7,Jake,Dog,30
De kolomvolgorde wijzigen
U kunt de volgorde van de te exporteren velden wijzigen. Ze hoeven niet in dezelfde volgorde als het onderliggende document te staan.
Bijvoorbeeld deze code:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,weight,type,name --out=data/pets.csv
Resultaten in het volgende CSV-bestand:
_id,weight,type,name 1,20,Dog,Wag 2,10,Dog,Bark 3,7,Cat,Meow 4,8,Cat,Scratch 5,3,Bat,Bruce 6,17,Dog,Fetch 7,30,Dog,Jake
En het volgende:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=type,name,weight,_id --out=data/pets.csv
Resultaten in dit:
type,name,weight,_id Dog,Wag,20,1 Dog,Bark,10,2 Cat,Meow,7,3 Cat,Scratch,8,4 Bat,Bruce,3,5 Dog,Fetch,17,6 Dog,Jake,30,7
Toegangscontrole/authenticatie
Als u localhost niet gebruikt, kunt u de --host
. gebruiken parameter om de host op te geven, en --port
om de poort te specificeren. U kunt ook de --username
. gebruiken parameter om de gebruikersnaam en --password
. op te geven naar voor het wachtwoord. Als u de wachtwoordparameter weglaat, wordt u hierom gevraagd. Er is ook een --authenticationDatabase
parameter voor het specificeren van de authenticatiedatabase waarin de gebruiker is aangemaakt.
Voorbeeld:
mongoexport --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --out=data/pets.csv
Controleer op mongoexport
mongoexport
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/mongoexport
beschikt geïnstalleerd, probeer dan het volgende commando in je Terminal of Command Prompt uit te voeren om te controleren:
mongoexport --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 moeten de opdrachten worden uitgevoerd?
Vergeet niet dat u mongoexport
. moet uitvoeren opdrachten vanaf de opdrachtregel van uw systeem (bijvoorbeeld een nieuw Terminal- of opdrachtpromptvenster).
Voer ze niet uit vanuit de mongo
schelp.