MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak wyeksportować wyniki zapytania MongoDB do pliku JSON

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wizualizacja topologii klastra w ClusterControl

  2. Mongoimport pliku JSON

  3. Najlepszy model do przedstawiania relacji wiele do wielu za pomocą atrybutów w MongoDB

  4. Zarządzanie kronikowaniem w MongoDB

  5. Monitorowanie i zarządzanie operacjami MongoDB 4.0 z ClusterControl