Narzędzia baz danych MongoDB zawierają narzędzie o nazwie mongoexport który umożliwia eksportowanie danych MongoDB do pliku CSV lub JSON.
Jedną z rzeczy, które możesz zrobić za pomocą tego narzędzia, jest eksport wyników zapytania. Ten artykuł pokazuje, jak używać mongoexport aby wyeksportować wyniki zapytania MongoDB do pliku JSON.
Składnia
Składnia mongoexport idzie tak:
mongoexport --collection=<coll> <options> <connection-string>
Musisz uruchomić mongoexport polecenia z wiersza poleceń systemu (np. nowe okno terminala lub wiersza polecenia).
Nie uruchamiaj mongoexport polecenia z mongo powłoka.
Przykład
Poniższy przykładowy kod eksportuje wyniki zapytania do pliku JSON:
mongoexport --db=PetHotel --collection=pets --query='{ "type": "Dog" }' --out=data/dogs.json
To eksportuje zapytanie, które odpytuje kolekcję o nazwie pets w PetHotel Baza danych. Zapytanie jest eksportowane do pliku o nazwie dogs.json w data/ teczka.
Jeśli folder nie istnieje, jest tworzony. To samo z plikiem. Nawiasem mówiąc, zakłada się, że nie ma problemów z uprawnieniami do zapisu pliku w określonej lokalizacji.
W tym przykładzie nie określiłem żadnego hosta, portu, uwierzytelniania itp., więc eksportuje kolekcję z instancji MongoDB działającej na domyślnym porcie hosta lokalnego o numerze 27017 .
Możesz także użyć --type parametr, aby jawnie określić JSON. Wartość domyślna to JSON, więc jest to opcjonalne podczas eksportowania do formatu JSON.
Możesz również dołączyć --fields parametr, aby określić, które pola mają zostać wyeksportowane. Domyślnie eksportuje wszystkie pola podczas korzystania z formatu JSON. Jednak podczas eksportowania do CSV należy określić, które pola mają zostać wyeksportowane.
Oto przykład powyższego przykładu z dodanymi dwoma parametrami:
mongoexport --db=PetHotel --collection=pets --type=json --fields=_id,name,type,weight --query='{ "type": "Dog" }' --out=data/dogs.json Poniżej znajduje się wyjaśnienie parametrów, które tutaj podaliśmy.
| Parametr | Opis |
|---|---|
--db lub -d | Określa bazę danych, na której należy uruchomić mongoexport . W tym przypadku baza danych nazywa się PetHotel . Ten parametr można alternatywnie przekazać za pomocą -d (zamiast --db ). |
--collection lub -c | Określa kolekcję, którą chcemy wyeksportować (lub uruchomić zapytanie). W tym przypadku kolekcja nazywa się pets . Ten parametr można alternatywnie przekazać jako -c (zamiast --collection ). |
--type | Określa typ eksportowanego pliku. W tym przypadku określamy json aby wyeksportować go do pliku JSON. Biorąc pod uwagę, że JSON jest wartością domyślną, ten parametr jest opcjonalny podczas eksportowania do JSON. |
--fields | Określa pola, które chcemy wyeksportować. Mamy możliwość eksportu wszystkich pól lub tylko niektórych. Przy eksporcie do JSON określenie nazw pól jest opcjonalne (jest to wymagane przy eksporcie do CSV). |
--query lub -q | Określa zapytanie, którego wyniki chcemy wyeksportować. Musi to być ujęte w pojedyncze cudzysłowy (aby nie wchodziło w interakcje z twoją powłoką). Ten parametr można również przekazać za pomocą -q . |
--out | Określa nazwę eksportowanego pliku i jego lokalizację. Jeśli nie określisz nazwy pliku, mongoexport zapisuje dane na standardowe wyjście (stdout ). |
Sprawdź wyeksportowany plik
Sprawdźmy, czy operacja eksportu przebiegła zgodnie z oczekiwaniami.
Najpierw przeprowadźmy zapytanie względem oryginalnej kolekcji.
use PetHotel
db.pets.find({ "type": "Dog" }) Wynik:
{ "_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 } Widzimy więc, że są 4 psy, wszystkie z tymi samymi polami, które określiliśmy w naszej operacji eksportu.
Teraz otwórzmy wyeksportowany plik dogs.json aby zobaczyć, co jest w środku:
{"_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} Wszystkie dane znajdują się w wyeksportowanym pliku zgodnie z oczekiwaniami.
Eksportuj mniej pól
Możesz określić mniej pól za pomocą --fields parametr, jeśli chcesz.
Przykład:
mongoexport --db=PetHotel --collection=pets --fields=name,weight --query='{ "type": "Dog" }' --out=data/dogs.json Wynikowy plik:
{"_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}
Zauważysz, że _id pole zostało uwzględnione w wyeksportowanym pliku, mimo że nie umieściłem go jawnie w --fields argument. Dzieje się tak, ponieważ _id pole jest zawsze dołączane przy eksporcie do formatu JSON – nawet jeśli wyraźnie go nie dołączasz. Nie dotyczy to eksportu do CSV.
Kontrola dostępu/uwierzytelnianie
Jeśli nie używasz localhost, możesz użyć --host parametr określający hosta oraz --port aby określić port. Możesz także użyć --username parametr określający nazwę użytkownika i --password do dla hasła. Jeśli pominiesz parametr hasła, zostaniesz o to poproszony. Istnieje również --authenticationDatabase parametr określający bazę danych uwierzytelniania, w której utworzono użytkownika.
Przykład:
mongoexport --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --db=PetHotel --collection=pets --query='{ "type": "Dog" }' --out=data/dogs.json Sprawdź mongoexport
mongoexport jest częścią pakietu MongoDB Database Tools. Narzędzia baz danych MongoDB to zestaw narzędzi wiersza poleceń do pracy z MongoDB.
Jeśli nie masz pewności, czy masz narzędzia bazy danych MongoDB/mongoexport zainstalowany, spróbuj uruchomić następujące polecenie w terminalu lub wierszu polecenia, aby sprawdzić:
mongoexport --version Jeśli go masz, powinieneś zobaczyć informacje o wersji itp. Jeśli go nie masz, możesz skorzystać z instrukcji instalacji na stronie MongoDB, aby zainstalować ją w swoim systemie.
Gdzie uruchamiać polecenia?
Nie zapomnij, musisz uruchomić mongoexport polecenia z wiersza poleceń systemu (np. nowe okno terminala lub wiersza polecenia).