sql >> Database >  >> NoSQL >> MongoDB

MongoDB-queryresultaten exporteren naar een JSON-bestand

De MongoDB Database Tools bevatten een hulpprogramma genaamd mongoexport waarmee u MongoDB-gegevens naar een CSV- of JSON-bestand kunt exporteren.

Een van de dingen die u met dit hulpprogramma kunt doen, is het exporteren van queryresultaten. Dit artikel laat zien hoe u mongoexport . gebruikt om MongoDB-queryresultaten naar een JSON-bestand te exporteren.

Syntaxis

De syntaxis voor mongoexport gaat als volgt:

mongoexport --collection=<coll> <options> <connection-string>

U moet mongoexport uitvoeren opdrachten vanaf de opdrachtregel van uw systeem (bijvoorbeeld een nieuw Terminal- of opdrachtpromptvenster).

Voer mongoexport niet uit commando's van de mongo schelp.

Voorbeeld

De volgende voorbeeldcode exporteert de resultaten van een query naar een JSON-bestand:

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

Dit exporteert een zoekopdracht die een verzameling opvraagt ​​met de naam pets in het PetHotel databank. De zoekopdracht wordt geëxporteerd naar een bestand met de naam dogs.json in de data/ map.

Als de map niet bestaat, wordt deze gemaakt. Hetzelfde met het bestand. Dit veronderstelt trouwens dat er geen toestemmingsproblemen zijn bij het schrijven van een bestand naar de opgegeven locatie.

In dit voorbeeld heb ik geen host, poort, authenticatie, enz. gespecificeerd, dus het exporteert de verzameling van de MongoDB-instantie die wordt uitgevoerd op het standaard localhost-poortnummer 27017 .

U kunt ook de --type . gebruiken parameter om JSON expliciet op te geven. De standaard is JSON, dus dit is optioneel bij het exporteren naar JSON.

U kunt ook een --fields parameter om op te geven welke velden moeten worden geëxporteerd. Standaard worden alle velden geëxporteerd bij gebruik van JSON. Wanneer u echter naar CSV exporteert, moet u specificeren welke velden u wilt exporteren.

Hier is een voorbeeld van het bovenstaande voorbeeld met deze twee parameters toegevoegd:

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

Hieronder vindt u een uitleg van de parameters die we hier hebben opgegeven.

Parameter Beschrijving
--db
of
-d
Specificeert de database waarop mongoexport moet worden uitgevoerd . In dit geval heet de database PetHotel .
Deze parameter kan ook worden doorgegeven met -d (in plaats van --db ).
--collection
of
-c
Specificeert de verzameling die we willen exporteren (of de query uitvoeren). In dit geval heet de verzameling pets .
Deze parameter kan ook worden doorgegeven als -c (in plaats van --collection ).
--type Specificeert het geëxporteerde bestandstype. In dit geval specificeren we json om het naar een JSON-bestand te exporteren. Aangezien JSON de standaardwaarde is, is deze parameter optioneel bij het exporteren naar JSON.
--fields Specificeert de velden die we willen exporteren. We hebben de mogelijkheid om alle velden of slechts enkele te exporteren. Bij het exporteren naar JSON is het opgeven van de veldnamen optioneel (het is een vereiste bij het exporteren naar CSV).
--query
of
-q
Specificeert de zoekopdracht waarvoor we de resultaten willen exporteren. Dit moet tussen enkele aanhalingstekens staan ​​(zodat het geen interactie heeft met uw shell).
Deze parameter kan ook worden doorgegeven met -q .
--out Specificeert de naam van het geëxporteerde bestand en waar het zich zal bevinden. Als u geen bestandsnaam opgeeft, mongoexport schrijft gegevens naar standaarduitvoer (stdout ).

Controleer het geëxporteerde bestand

Laten we controleren of de exportbewerking werkte zoals verwacht.

Laten we eerst de query uitvoeren op de oorspronkelijke verzameling.

use PetHotel
db.pets.find({ "type": "Dog" })

Resultaat:

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

We kunnen dus zien dat er 4 honden zijn, allemaal met dezelfde velden die we hebben gespecificeerd in onze exportbewerking.

Laten we nu het geëxporteerde bestand dogs.json openen om te zien wat erin zit:

{"_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 gegevens bevinden zich zoals verwacht in het geëxporteerde bestand.

Minder velden exporteren

U kunt minder velden specificeren met de --fields parameter als je wilt.

Voorbeeld:

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

Resulterend bestand:

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

U zult merken dat de _id veld was opgenomen in het geëxporteerde bestand, ook al heb ik het niet expliciet opgenomen in de --fields argument. Dat komt omdat de _id veld wordt altijd opgenomen bij het exporteren naar JSON - zelfs als u het niet expliciet opneemt. Dit is niet het geval bij het exporteren naar CSV.

Toegangscontrole/authenticatie

Als u localhost niet gebruikt, kunt u de --host . gebruiken parameter om de host op te geven, en --port om de poort te specificeren. U kunt ook de --username . gebruiken parameter om de gebruikersnaam en --password . op te geven naar voor het wachtwoord. Als u de wachtwoordparameter weglaat, wordt u hierom gevraagd. Er is ook een --authenticationDatabase parameter voor het specificeren van de authenticatiedatabase waarin de gebruiker is aangemaakt.

Voorbeeld:

mongoexport --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --db=PetHotel --collection=pets --query='{ "type": "Dog" }' --out=data/dogs.json

Controleer op mongoexport

mongoexport maakt deel uit van het MongoDB Database Tools-pakket. De MongoDB Database Tools zijn een reeks opdrachtregelhulpprogramma's voor het werken met MongoDB.

Als u niet zeker weet of u over de MongoDB Database Tools/mongoexport beschikt geïnstalleerd, probeer dan het volgende commando in je Terminal of Command Prompt uit te voeren om te controleren:

mongoexport --version

Als je het hebt, zou je versie-informatie, enz. moeten zien. Als je het niet hebt, kun je de installatie-instructies op de MongoDB-website gebruiken om het op je systeem te installeren.

Waar moeten de opdrachten worden uitgevoerd?

Vergeet niet dat u mongoexport . moet uitvoeren opdrachten vanaf de opdrachtregel van uw systeem (bijvoorbeeld een nieuw Terminal- of opdrachtpromptvenster).


  1. MongoDB updateMany()

  2. Mongoose.js:gebruiker zoeken op gebruikersnaam LIKE-waarde

  3. Redis gebruiken als cache voor een mysql-database

  4. Flask by example - Een Redis-taakwachtrij implementeren