MongoDB-databaseværktøjerne inkluderer et hjælpeprogram kaldet mongoexport
der giver dig mulighed for at eksportere MongoDB-data til en CSV- eller JSON-fil.
En af de ting, du kan gøre med dette hjælpeprogram, er at eksportere forespørgselsresultater. Denne artikel viser dig, hvordan du bruger mongoexport
for at eksportere MongoDB-forespørgselsresultater til en CSV-fil.
Syntaks
Syntaksen for mongoexport
går sådan her:
mongoexport --collection=<coll> <options> <connection-string>
Du skal køre mongoexport
kommandoer fra dit systems kommandolinje (f.eks. et nyt terminal- eller kommandopromptvindue).
Kør ikke mongoexport
kommandoer fra mongo
skal.
Eksempel
Følgende eksempelkode eksporterer resultaterne af en forespørgsel til en CSV-fil:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --query='{ "type": "Dog" }' --out=data/dogs.csv
Dette eksporterer en forespørgsel, der forespørger på en samling kaldet pets
i PetHotel
database. Forespørgslen eksporteres til en fil kaldet dogs.csv
i data/
folder.
Hvis mappen ikke eksisterer, er den oprettet. Det samme med filen. Det forudsætter i øvrigt, at der ikke er nogen tilladelsesproblemer med at skrive en fil til den angivne placering.
I dette eksempel har jeg ikke angivet nogen vært, port, godkendelse osv., så den eksporterer samlingen fra MongoDB-instansen, der kører på standard localhost-portnummeret 27017
.
Nedenfor er en forklaring af de parametre, vi har leveret her.
Parameter | Beskrivelse |
---|---|
--db eller -d | Specificerer den database, som mongoexport skal køres på . I dette tilfælde kaldes databasen PetHotel . Denne parameter kan alternativt sendes med -d (i stedet for --db ). |
--collection eller -c | Specificerer den samling, vi ønsker at eksportere (eller køre forespørgslen imod). I dette tilfælde kaldes samlingen pets . Denne parameter kan alternativt overføres som -c (i stedet for --collection ). |
--type | Specificerer den eksporterede filtype. I dette tilfælde angiver vi csv for at eksportere den til en CSV-fil. |
--fields | Specificerer de felter, som vi ønsker at eksportere. Vi har mulighed for at eksportere alle felter eller kun nogle. Du skal angive hver enkelt her, adskilt af et komma. Ved eksport til CSV er det et krav at angive feltnavnene. Du kan gøre det via --fields parameter eller --fieldFile parameter (mere om det senere). |
--query eller -q | Specificerer den forespørgsel, for hvilke resultater vi ønsker at eksportere. Dette skal være omgivet af enkelte anførselstegn (så det ikke interagerer med din shell). Denne parameter kan også overføres ved hjælp af -q . |
--out | Specificerer det eksporterede filnavn og hvor det vil blive placeret. Hvis du ikke angiver et filnavn, mongoexport skriver data til standard output (stdout ). |
Tjek den eksporterede fil
Lad os kontrollere, at eksportoperationen fungerede som forventet.
Lad os først køre forespørgslen mod den oprindelige samling.
use PetHotel
db.pets.find({ "type": "Dog" })
Resultat:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 } { "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }
Så vi kan se, at der er 4 hunde, alle med de samme felter, som vi angav i vores eksportoperation.
Lad os nu åbne den eksporterede fil dogs.csv
for at se, hvad der er indeni:
_id,name,type,weight 1,Wag,Dog,20 2,Bark,Dog,10 6,Fetch,Dog,17 7,Jake,Dog,30
OK, så alle data er i den eksporterede fil som forventet.
Eksportér færre felter
Du kan angive færre felter med --fields
parameter, hvis du ønsker det.
Eksempel:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=name,weight --query='{ "type": "Dog" }' --out=data/dogs.csv
Resulterende fil:
name,weight Wag,20 Bark,10 Fetch,17 Jake,30
Fjern kolonneoverskrifter
Du vil bemærke, at den eksporterede fil i de foregående eksempler inkluderede kolonneoverskrifterne.
Du har også mulighed for at eksportere filen uden kolonneoverskrifter. For at gøre dette skal du bruge --noHeaderLine
parameter.
Eksempel:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --query='{ "type": "Dog" }' --noHeaderLine --out=data/dogs.csv
Når jeg nu åbner den eksporterede fil, er der ingen kolonneoverskrifter:
1,Wag,Dog,20 2,Bark,Dog,10 6,Fetch,Dog,17 7,Jake,Dog,30
Brug en fil til feltnavnene
Du kan erstatte --field
parameter med --fieldFile
parameter for at angive navnet på en fil, der indeholder de feltnavne, som du vil eksportere.
mongoexport --db=PetHotel --collection=pets --type=csv --fieldFile=data/dogs_fields.txt --query='{ "type": "Dog" }' --out=data/dogs.csv
Filen, der indeholder felterne, skal have felterne anført, én pr. linje.
Her er hvad dogs_fields.txt
fil så ud for dette eksempel:
name type weight
Dette resulterede i, at indholdet af den eksporterede fil så således ud:
name,type,weight Wag,Dog,20 Bark,Dog,10 Fetch,Dog,17 Jake,Dog,30
Ændring af kolonnerækkefølgen
Du kan ændre rækkefølgen af felterne til eksport. De behøver ikke at være i samme rækkefølge som det underliggende dokument.
For eksempel denne kode:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=type,name,weight,_id --query='{ "type": "Dog" }' --out=data/dogs.csv
Resulterer i følgende CSV-fil:
type,name,weight,_id Dog,Wag,20,1 Dog,Bark,10,2 Dog,Fetch,17,6 Dog,Jake,30,7
Adgangskontrol/godkendelse
Hvis du ikke bruger localhost, kan du bruge --host
parameter for at angive værten og --port
for at angive porten. Du kan også bruge --username
parameter for at angive brugernavnet og --password
til for adgangskoden. Hvis du udelader adgangskodeparameteren, bliver du bedt om det. Der er også en --authenticationDatabase
parameter til at angive den godkendelsesdatabase, hvor brugeren er oprettet.
Eksempel:
mongoexport --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --query='{ "type": "Dog" }' --out=data/dogs.csv
Se efter mongoexport
mongoexport
er en del af MongoDB Database Tools-pakken. MongoDB-databaseværktøjerne er en række kommandolinjeværktøjer til at arbejde med MongoDB.
Hvis du ikke er sikker på, om du har MongoDB Database Tools/mongoexport
installeret, prøv at køre følgende kommando i din terminal eller kommandoprompt for at kontrollere:
mongoexport --version
Hvis du har det, bør du se versionsoplysninger osv. Hvis du ikke har det, kan du bruge installationsinstruktionerne på MongoDB-webstedet til at installere det på dit system.
Hvor skal kommandoerne køres?
Glem ikke, du skal køre mongoexport
kommandoer fra dit systems kommandolinje (f.eks. et nyt terminal- eller kommandopromptvindue).