MongoDBs databasverktyg inkluderar ett verktyg som heter mongoexport
som gör att du kan exportera MongoDB-data till en CSV- eller JSON-fil.
Den här artikeln visar hur du använder mongoexport
för att exportera en MongoDB-samling till en JSON-fil.
Syntax
Syntaxen för mongoexport
går så här:
mongoexport --collection=<coll> <options> <connection-string>
Du måste köra mongoexport
kommandon från ditt systems kommandorad (t.ex. ett nytt terminal- eller kommandotolkfönster).
Kör inte mongoexport
kommandon från mongo
skal.
Exportera en samling
Följande exempelkod exporterar en samling från MongoDB till en JSON-fil:
mongoexport --db=PetHotel --collection=pets --out=data/pets.json
Detta exporterar en samling som heter pets
från PetHotel
databas till en fil som heter pets.json
i data/
mapp.
Om mappen inte finns skapas den. Samma sak med filen. Detta förutsätter förresten att det inte finns några behörighetsproblem med att skriva en fil till den angivna platsen.
I det här exemplet angav jag inte någon värd, port, autentisering, etc, så den exporterar samlingen från MongoDB-instansen som körs på standardvärdens portnummer 27017
.
Ovanstående exempel kan också skrivas så här:
mongoexport --db=PetHotel --collection=pets --type=json --fields=_id,name,type,weight --out=data/pets.json
I det här fallet lade vi till --type
parameter och ett --fields
parameter för att ange vilka fält som ska inkluderas i JSON-filen.
Nedan finns en förklaring av parametrarna som vi har tillhandahållit här.
Parameter | Beskrivning |
---|---|
--db eller -d | Anger databasen som innehåller samlingen vi vill exportera. I det här fallet kallas databasen PetHotel . Denna parameter kan alternativt skickas med -d (istället för --db ). |
--collection eller -c | Anger samlingen vi vill exportera. I det här fallet kallas samlingen pets . Denna parameter kan alternativt skickas som -c (istället för --collection ). |
--type | Anger den exporterade filtypen. I det här fallet anger vi json för att exportera den till en JSON-fil. json är standardvärdet, så om vi inte anger denna parameter matas filen ut som en JSON-fil. |
--fields | Anger fälten som vi vill exportera. Vi har möjlighet att exportera alla fält i samlingen, eller bara några. Separera flera fältnamn med ett kommatecken. När du exporterar till JSON är det valfritt att ange fältnamn (till skillnad från med CSV). |
--out | Anger det exporterade filnamnet och var den kommer att finnas. Om du inte anger ett filnamn, mongoexport skriver data till standardutgång (stdout ). |
Kontrollera den exporterade filen
Låt oss verifiera att exporten fungerade som förväntat.
Låt oss först kontrollera den ursprungliga samlingen.
use PetHotel
db.pets.find()
Resultat:
{ "_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 }
Så vi kan se att det finns 7 husdjur, alla med samma fält som vi angav i vår exportverksamhet.
Låt oss nu öppna den exporterade filen pets.json
för att se vad som finns inuti:
{"_id":1.0,"name":"Wag","type":"Dog","weight":20.0} {"_id":2.0,"name":"Bark","type":"Dog","weight":10.0} {"_id":3.0,"name":"Meow","type":"Cat","weight":7.0} {"_id":4.0,"name":"Scratch","type":"Cat","weight":8.0} {"_id":5.0,"name":"Bruce","type":"Bat","weight":3.0} {"_id":6.0,"name":"Fetch","type":"Dog","weight":17.0} {"_id":7.0,"name":"Jake","type":"Dog","weight":30.0}
All data finns i den exporterade filen som förväntat.
Färre fält
Du kan använda --fields
parameter för att ange vilka fält du vill exportera.
När du gör detta på JSON-filer, visas _id
fältet exporteras alltid (även när du inte inkluderar det i listan över fält att exportera).
Exempel:
mongoexport --db=PetHotel --collection=pets --fields=name,type --out=data/pets.json
I det här fallet anger jag två fält att exportera.
När jag öppnar den exporterade filen kan jag se att båda dessa fält är exporterade, plus _id
fält:
{"_id":1.0,"name":"Wag","type":"Dog"} {"_id":2.0,"name":"Bark","type":"Dog"} {"_id":3.0,"name":"Meow","type":"Cat"} {"_id":4.0,"name":"Scratch","type":"Cat"} {"_id":5.0,"name":"Bruce","type":"Bat"} {"_id":6.0,"name":"Fetch","type":"Dog"} {"_id":7.0,"name":"Jake","type":"Dog"}
Åtkomstkontroll/autentisering
Om du inte använder localhost kan du använda --host
parameter för att ange värden och --port
för att ange porten. Du kan också använda --username
parameter för att ange användarnamn och --password
till för lösenordet. Om du utelämnar lösenordsparametern kommer du att bli tillfrågad om den. Det finns också en --authenticationDatabase
parameter för att ange den autentiseringsdatabasen där användaren har skapats.
Exempel:
mongoexport --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --db=PetHotel --collection=pets --out=data/pets.json
Kontrollera efter mongoexport
mongoexport
är en del av MongoDB Database Tools-paketet. MongoDB Database Tools är en uppsättning kommandoradsverktyg för att arbeta med MongoDB.
Om du inte är säker på om du har MongoDB Database Tools/mongoexport
installerat, prova att köra följande kommando i din terminal eller kommandotolk för att kontrollera:
mongoexport --version
Om du har det bör du se versionsinformation etc. Om du inte har det kan du använda installationsinstruktionerna på MongoDB-webbplatsen för att installera det på ditt system.
Var kör man kommandona?
Glöm inte att du måste köra mongoexport
kommandon från ditt systems kommandorad (t.ex. ett nytt terminal- eller kommandotolkfönster).
Kör dem inte från mongo
skal.