sql >> Database teknologi >  >> NoSQL >> MongoDB

Sådan eksporteres MongoDB-forespørgselsresultater til en JSON-fil

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 JSON-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 JSON-fil:

mongoexport --db=PetHotel --collection=pets --query='{ "type": "Dog" }' --out=data/dogs.json

Dette eksporterer en forespørgsel, der forespørger på en samling kaldet pets i PetHotel database. Forespørgslen eksporteres til en fil kaldet dogs.json 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 .

Du kan også bruge --type parameter for eksplicit at angive JSON. Standarden er JSON, så dette er valgfrit ved eksport til JSON.

Du kan også inkludere en --fields parameter for at angive, hvilke felter der skal eksporteres. Som standard eksporterer den alle felter, når du bruger JSON. Når du eksporterer til CSV, skal du dog angive, hvilke felter der skal eksporteres.

Her er et eksempel på ovenstående eksempel med disse to parametre tilføjet:

mongoexport --db=PetHotel --collection=pets --type=json --fields=_id,name,type,weight --query='{ "type": "Dog" }' --out=data/dogs.json

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 json for at eksportere den til en JSON-fil. Da JSON er standardværdien, er denne parameter valgfri ved eksport til JSON.
--fields Specificerer de felter, som vi ønsker at eksportere. Vi har mulighed for at eksportere alle felter eller kun nogle. Ved eksport til JSON er det valgfrit at angive feltnavnene (det er et krav ved eksport til CSV).
--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.json for at se, hvad der er indeni:

{"_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}

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 --fields=name,weight --query='{ "type": "Dog" }' --out=data/dogs.json

Resulterende fil:

{"_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 vil bemærke, at _id felt blev inkluderet i den eksporterede fil, selvom jeg ikke eksplicit inkluderede det i --fields argument. Det er fordi _id felt er altid inkluderet, når du eksporterer til JSON - også når du ikke eksplicit inkluderer det. Dette er ikke tilfældet, når du eksporterer til CSV.

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 --query='{ "type": "Dog" }' --out=data/dogs.json

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).


  1. Opretter forbindelse til administreret redis med auth brugernavn/adgangskode nodejs

  2. Mongoose findOneAndUpdate og runValidators virker ikke

  3. Hvordan laver man en forespørgselsdato i mongodb ved hjælp af pymongo?

  4. Hvordan indstiller jeg en elasticache redis klynge som slave?