sql >> Database >  >> NoSQL >> MongoDB

Een MongoDB-verzameling 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.

Dit artikel laat zien hoe u mongoexport . gebruikt om een ​​MongoDB-verzameling 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.

Een collectie exporteren

De volgende voorbeeldcode exporteert een verzameling van MongoDB naar een JSON-bestand:

mongoexport --db=PetHotel --collection=pets --out=data/pets.json

Hiermee wordt een verzameling geëxporteerd met de naam pets van het PetHotel database naar een bestand met de naam pets.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 .

Het bovenstaande voorbeeld kan ook als volgt worden geschreven:

mongoexport --db=PetHotel --collection=pets --type=json --fields=_id,name,type,weight --out=data/pets.json

In dit geval hebben we de --type . toegevoegd parameter en een --fields parameter om aan te geven welke velden in het JSON-bestand moeten worden opgenomen.

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

Parameter Beschrijving
--db
of
-d
Specificeert de database die de collectie bevat die we willen exporteren. In dit geval heet de database PetHotel .
Deze parameter kan ook worden doorgegeven met -d (in plaats van --db ).
--collection
of
-c
Specificeert de collectie die we willen exporteren. 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. json is de standaardwaarde, dus als we deze parameter niet specificeren, wordt het bestand uitgevoerd als een JSON-bestand.
--fields Specificeert de velden die we willen exporteren. We hebben de mogelijkheid om alle velden in de collectie te exporteren, of slechts enkele. Scheid meerdere veldnamen met een komma. Bij het exporteren naar JSON is het opgeven van veldnamen optioneel (in tegenstelling tot bij CSV).
--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 originele collectie eens bekijken.

use PetHotel
db.pets.find()

Resultaat:

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

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

Laten we nu het geëxporteerde bestand pets.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":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}

Alle gegevens bevinden zich zoals verwacht in het geëxporteerde bestand.

Minder velden

U kunt de --fields . gebruiken parameter om aan te geven welke velden u wilt exporteren.

Wanneer u dit doet op JSON-bestanden, wordt de _id veld wordt altijd geëxporteerd (zelfs als u het niet opneemt in de lijst met te exporteren velden).

Voorbeeld:

mongoexport --db=PetHotel --collection=pets --fields=name,type --out=data/pets.json

In dit geval specificeer ik twee velden om te exporteren.

Als ik het geëxporteerde bestand open, zie ik dat beide velden zijn geëxporteerd, plus de _id veld:

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

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 --out=data/pets.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).

Voer ze niet uit vanuit de mongo schelp.


  1. Hoe Yii2 in te stellen met Redis-configuratie

  2. Wanneer gebruik je een sleutel/waarde-archief zoals Redis in plaats van/naast een SQL-database?

  3. Groeperen op voorwaarde in MongoDB

  4. Hoe array in subdocument te filteren met MongoDB