MongoDBs databasverktyg inkluderar ett verktyg som heter mongoexport
som gör att du kan exportera MongoDB-data till en CSV- eller JSON-fil.
En av de saker du kan göra med det här verktyget är att exportera frågeresultat. Den här artikeln visar hur du använder mongoexport
för att exportera MongoDB-frågeresultat 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 kommandotolksfönster).
Kör inte mongoexport
kommandon från mongo
skal.
Exempel
Följande exempelkod exporterar resultaten av en fråga till en JSON-fil:
mongoexport --db=PetHotel --collection=pets --query='{ "type": "Dog" }' --out=data/dogs.json
Detta exporterar en fråga som frågar efter en samling som heter pets
i PetHotel
databas. Frågan exporteras till en fil som heter dogs.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
.
Du kan också använda --type
parameter för att explicit specificera JSON. Standard är JSON, så detta är valfritt vid export till JSON.
Du kan också inkludera ett --fields
parameter för att ange vilka fält som ska exporteras. Som standard exporterar den alla fält när du använder JSON. Men när du exporterar till CSV måste du ange vilka fält som ska exporteras.
Här är ett exempel på exemplet ovan med dessa två parametrar tillagda:
mongoexport --db=PetHotel --collection=pets --type=json --fields=_id,name,type,weight --query='{ "type": "Dog" }' --out=data/dogs.json
Nedan finns en förklaring av parametrarna som vi har tillhandahållit här.
Parameter | Beskrivning |
---|---|
--db eller -d | Anger databasen som mongoexport ska köras på . 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 (eller köra frågan mot). 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. Med tanke på att JSON är standardvärdet är denna parameter valfri vid export till JSON. |
--fields | Anger fälten som vi vill exportera. Vi har möjlighet att exportera alla fält eller bara några. Vid export till JSON är det valfritt att ange fältnamn (det är ett krav vid export till CSV). |
--query eller -q | Anger frågan för vilka resultat vi vill exportera. Detta måste omges av enkla citattecken (så att det inte interagerar med ditt skal). Denna parameter kan också skickas med -q . |
--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 köra frågan mot den ursprungliga samlingen.
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 att det finns 4 hundar, alla med samma fält som vi angav i vår exportoperation.
Låt oss nu öppna den exporterade filen dogs.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":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.
Exportera färre fält
Du kan ange färre fält med --fields
parameter om du vill.
Exempel:
mongoexport --db=PetHotel --collection=pets --fields=name,weight --query='{ "type": "Dog" }' --out=data/dogs.json
Resultatfil:
{"_id":1.0,"name":"Wag","weight":20.0} {"_id":2.0,"name":"Bark","weight":10.0} {"_id":6.0,"name":"Fetch","weight":17.0} {"_id":7.0,"name":"Jake","weight":30.0}
Du kommer att märka att _id
fältet inkluderades i den exporterade filen, även om jag inte uttryckligen inkluderade det i --fields
argument. Det beror på att _id
fältet inkluderas alltid när du exporterar till JSON – även när du inte uttryckligen inkluderar det. Detta är inte fallet när du exporterar till CSV.
Å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 --query='{ "type": "Dog" }' --out=data/dogs.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 kommandotolksfönster).