Databázové nástroje MongoDB zahrnují nástroj nazvaný mongoexport který vám umožňuje exportovat data MongoDB do souboru CSV nebo JSON.
Jednou z věcí, které můžete s tímto nástrojem udělat, je export výsledků dotazu. Tento článek ukazuje, jak používat mongoexport exportovat výsledky dotazů MongoDB do souboru JSON.
Syntaxe
Syntaxe pro mongoexport vypadá takto:
mongoexport --collection=<coll> <options> <connection-string>
Musíte spustit mongoexport příkazy z příkazového řádku vašeho systému (např. nový terminál nebo okno příkazového řádku).
Nespouštějte mongoexport příkazy z mongo skořápka.
Příklad
Následující ukázkový kód exportuje výsledky dotazu do souboru JSON:
mongoexport --db=PetHotel --collection=pets --query='{ "type": "Dog" }' --out=data/dogs.json
Tím se exportuje dotaz, který se dotazuje na kolekci nazvanou pets v PetHotel databáze. Dotaz je exportován do souboru s názvem dogs.json v data/ složka.
Pokud složka neexistuje, je vytvořena. To samé se souborem. To mimochodem předpokládá, že při zápisu souboru do zadaného umístění neexistují žádné problémy s oprávněními.
V tomto příkladu jsem nespecifikoval žádného hostitele, port, ověřování atd., takže exportuje kolekci z instance MongoDB běžící na výchozím čísle portu localhost 27017 .
Můžete také použít --type parametr pro explicitní specifikaci JSON. Výchozí hodnota je JSON, takže při exportu do JSON je tato volba volitelná.
Můžete také zahrnout --fields parametr určující, která pole se mají exportovat. Ve výchozím nastavení exportuje všechna pole při použití JSON. Při exportu do CSV však musíte určit, která pole chcete exportovat.
Zde je příklad výše uvedeného příkladu s těmito dvěma přidanými parametry:
mongoexport --db=PetHotel --collection=pets --type=json --fields=_id,name,type,weight --query='{ "type": "Dog" }' --out=data/dogs.json Níže je vysvětlení parametrů, které jsme zde uvedli.
| Parametr | Popis |
|---|---|
--db nebo -d | Určuje databázi, na které se má spustit mongoexport . V tomto případě se databáze nazývá PetHotel . Tento parametr lze alternativně předat pomocí -d (místo --db ). |
--collection nebo -c | Určuje kolekci, kterou chceme exportovat (nebo pro kterou chcete spustit dotaz). V tomto případě se kolekce nazývá pets . Tento parametr lze alternativně předat jako -c (místo --collection ). |
--type | Určuje typ exportovaného souboru. V tomto případě zadáme json pro export do souboru JSON. Vzhledem k tomu, že JSON je výchozí hodnotou, je tento parametr při exportu do JSON volitelný. |
--fields | Určuje pole, která chceme exportovat. Máme možnost exportovat všechna pole nebo jen některá. Při exportu do formátu JSON je zadání názvů polí volitelné (je to požadavek při exportu do formátu CSV). |
--query nebo -q | Udává dotaz, pro které výsledky chceme exportovat. Toto musí být uzavřeno v jednoduchých uvozovkách (aby neinteragovalo s vaším shellem). Tento parametr lze také předat pomocí -q . |
--out | Udává název exportovaného souboru a místo, kde bude umístěn. Pokud nezadáte název souboru, mongoexport zapisuje data na standardní výstup (stdout ). |
Zkontrolujte exportovaný soubor
Ověřte, že operace exportu fungovala podle očekávání.
Nejprve spusťte dotaz proti původní kolekci.
use PetHotel
db.pets.find({ "type": "Dog" }) Výsledek:
{ "_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 } Můžeme tedy vidět, že existují 4 psi, všichni se stejnými poli, která jsme specifikovali v naší exportní operaci.
Nyní otevřeme exportovaný soubor dogs.json abyste viděli, co je uvnitř:
{"_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} Všechna data jsou v exportovaném souboru podle očekávání.
Exportovat méně polí
Pomocí --fields můžete zadat méně polí parametr, chcete-li.
Příklad:
mongoexport --db=PetHotel --collection=pets --fields=name,weight --query='{ "type": "Dog" }' --out=data/dogs.json Výsledný soubor:
{"_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}
Všimnete si, že _id pole bylo zahrnuto do exportovaného souboru, i když jsem ho výslovně nezahrnul do --fields argument. Důvodem je _id pole je vždy zahrnuto při exportu do JSON – i když je výslovně nezahrnete. Při exportu do CSV tomu tak není.
Řízení přístupu/ověření
Pokud nepoužíváte localhost, můžete použít --host parametr k určení hostitele a --port specifikovat port. Můžete také použít --username parametr k zadání uživatelského jména a --password pro heslo. Pokud parametr heslo vynecháte, budete k jeho zadání vyzváni. K dispozici je také --authenticationDatabase parametr pro specifikaci autentizační databáze, kde byl uživatel vytvořen.
Příklad:
mongoexport --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --db=PetHotel --collection=pets --query='{ "type": "Dog" }' --out=data/dogs.json Vyhledejte mongoexport
mongoexport je součástí balíčku databázových nástrojů MongoDB. Databázové nástroje MongoDB jsou sada nástrojů příkazového řádku pro práci s MongoDB.
Pokud si nejste jisti, zda máte MongoDB Database Tools/mongoexport nainstalovaný, zkuste spustit následující příkaz v terminálu nebo příkazovém řádku a zkontrolujte:
mongoexport --version Pokud ji máte, měli byste vidět informace o verzi atd. Pokud ji nemáte, můžete ji nainstalovat do svého systému pomocí pokynů k instalaci na webu MongoDB.
Kde spustit příkazy?
Nezapomeňte, že musíte spustit mongoexport příkazy z příkazového řádku vašeho systému (např. nový terminál nebo okno příkazového řádku).