Narzędzia baz danych MongoDB zawierają narzędzie o nazwie mongoexport
który umożliwia eksportowanie danych MongoDB do pliku CSV lub JSON.
Ten artykuł pokazuje, jak używać mongoexport
aby wyeksportować kolekcję 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.
Eksportuj kolekcję
Poniższy przykładowy kod eksportuje kolekcję z MongoDB do pliku JSON:
mongoexport --db=PetHotel --collection=pets --out=data/pets.json
Spowoduje to wyeksportowanie kolekcji o nazwie pets
z PetHotel
bazy danych do pliku o nazwie pets.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
.
Powyższy przykład można również zapisać tak:
mongoexport --db=PetHotel --collection=pets --type=json --fields=_id,name,type,weight --out=data/pets.json
W tym przypadku dodaliśmy --type
parametr i --fields
parametr, aby określić, które pola należy uwzględnić w pliku JSON.
Poniżej znajduje się wyjaśnienie parametrów, które tutaj podaliśmy.
Parametr | Opis |
---|---|
--db lub -d | Określa bazę danych zawierającą kolekcję, którą chcemy wyeksportować. 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ć. 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. json jest wartością domyślną, więc jeśli nie określimy tego parametru, plik zostanie wyprowadzony jako plik JSON. |
--fields | Określa pola, które chcemy wyeksportować. Mamy możliwość wyeksportowania wszystkich pól w kolekcji lub tylko niektórych. Poszczególne nazwy pól oddziel przecinkami. Podczas eksportowania do formatu JSON określenie nazw pól jest opcjonalne (w przeciwieństwie do CSV). |
--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 sprawdźmy oryginalną kolekcję.
use PetHotel
db.pets.find()
Wynik:
{ "_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 }
Widzimy więc, że jest 7 zwierząt domowych, wszystkie z tymi samymi polami, które określiliśmy w naszej operacji eksportu.
Teraz otwórzmy wyeksportowany plik pets.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":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}
Wszystkie dane znajdują się w wyeksportowanym pliku zgodnie z oczekiwaniami.
Mniej pól
Możesz użyć --fields
parametr, aby określić, które pola chcesz wyeksportować.
Gdy robisz to na plikach JSON, _id
pole jest zawsze eksportowane (nawet jeśli nie uwzględnisz go na liście pól do wyeksportowania).
Przykład:
mongoexport --db=PetHotel --collection=pets --fields=name,type --out=data/pets.json
W tym przypadku określam dwa pola do wyeksportowania.
Kiedy otwieram wyeksportowany plik, widzę, że oba te pola zostały wyeksportowane, plus _id
pole:
{"_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"}
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 --out=data/pets.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 baz danych MongoDB/mongoexport
zainstalowany, spróbuj uruchomić następujące polecenie w terminalu lub wierszu poleceń, 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).
Nie uruchamiaj ich z mongo
powłoka.