sql >> Databasteknik >  >> NoSQL >> MongoDB

Exportera en MongoDB-samling till en JSON-fil

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.


  1. Ett prestationsfuskblad för MongoDB

  2. Mongodb grupp och sortera

  3. Hur kan jag köra kommandon i redis utan att få något svar alls?

  4. Hämta ett värde från MongoDB efter dess nyckelnamn