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