Chcę wyeksportować wszystkie kolekcje w MongoDB za pomocą polecenia:
mongoexport -d dbname -o Mongo.json
Wynik jest następujący:
Nie określono kolekcji!
Instrukcja mówi, że jeśli nie określisz kolekcji, wszystkie kolekcje zostaną wyeksportowane.
Dlaczego jednak to nie działa?
http://docs.mongodb.org/manual/reference/mongoexport/#cmdoption-mongoexport--collection
Moja wersja MongoDB to 2.0.6.
Odpowiedzi:
Dla leniwych używaj
mongodump
, jest szybszy:Aby go „przywrócić / zaimportować” (z katalog_kopii_zapasowej / zrzutu /):
W ten sposób nie musisz zajmować się wszystkimi kolekcjami indywidualnie. Po prostu określ bazę danych.
Pamiętaj, że odradzam używanie
mongodump
/mongorestore
do przechowywania dużych zbiorów danych . Jest bardzo powolny, a po przekroczeniu 10/20 GB danych przywracanie danych może potrwać kilka godzin.źródło
Napisałem do tego skrypt bash. Wystarczy uruchomić go z 2 parametrami (nazwa bazy danych, katalog do przechowywania plików).
źródło
for file in *.json; do c=${file#*exp_yourdbname_}; c=${c%.json}; mongoimport --db yourdbname --collection "${c}" --file "${file}"; done
Wykonaj poniższe kroki, aby utworzyć mongodump z serwera i zaimportować go z innego serwera / komputera lokalnego, który ma nazwę użytkownika i hasło
źródło
Eksportując wszystkie kolekcje za pomocą mongodump, użyj następującego polecenia
mongodump -d database_name -o directory_to_store_dumps
Aby przywrócić, użyj tego polecenia
źródło
mongodump -d mongo -o path\to\Desktop\blog
i dostajęSyntaxError: missing ; before statement
od CMD. :(Daj nam znać, gdzie zainstalowałeś swoją bazę danych Mongo? (w systemie Ubuntu lub w systemie Windows)
Dla Windowsa:
mongodump --db nazwa bazy danych --out ścieżka do zapisania
np .: mongodump --db mydb --out c: \ TEMP \ op.json
W przypadku Ubuntu:
mongodump -d nazwa bazy danych -o nazwa pliku, aby zapisać
np .: mongodump -d mydb -o output.json
źródło
Poprzednie odpowiedzi dobrze to wyjaśniały, dodaję swoją odpowiedź, aby pomóc w przypadku zdalnej bazy danych chronionej hasłem
źródło
Jeśli chcesz podłączyć zdalny serwer mongoDB, taki jak mongolab.com, powinieneś podać poświadczenia połączenia, np.
źródło
Jeśli nie masz nic przeciwko formatowi bson, możesz użyć narzędzia mongodump z tą samą flagą -d. Zrzuci wszystkie kolekcje do katalogu zrzutu (domyślnie, można to zmienić za pomocą opcji -o) w formacie bson. Następnie możesz zaimportować te pliki za pomocą narzędzia mongorestore.
źródło
Możesz użyć,
mongo --eval 'printjson(db.getCollectionNames())'
aby uzyskać listę kolekcji, a następnie wykonać mongoeksport na wszystkich z nich. Oto przykład w rubinieźródło
out.scan(/\".+?\"/).map { |s| s.gsub('"', '') }
Potrzebowałem wersji wsadowej skryptu Windows. Ten wątek był przydatny, więc pomyślałem, że ja też wrócę do niego.
Miałem pewne problemy z używaniem
set /p COLLECTIONS=<__collections.txt
, stąd zwiniętafor /f
metoda.źródło
Po wypróbowaniu wielu zawiłych przykładów odkryłem, że bardzo proste podejście działa na mnie.
Chciałem tylko zrobić zrzut bazy danych z lokalnego i zaimportować do zdalnej instancji:
na komputerze lokalnym:
następnie scpdowałem mój zrzut do mojego serwera:
następnie z katalogu macierzystego zrzutu po prostu:
i to zaimportowało bazę danych.
zakładając, że usługa mongodb działa oczywiście.
źródło
Jeśli chcesz, możesz wyeksportować wszystkie kolekcje do csv bez określania
--fields
(wyeksportuje wszystkie pola).Z http://drzon.net/export-mongodb-collections-to-csv-without-specifying-fields/ uruchom ten skrypt bash
źródło
Jeśli chcesz zrzucić wszystkie kolekcje we wszystkich bazach danych (co jest ekspansywną interpretacją intencji pierwotnego pytającego), użyj
Wszystkie bazy danych i kolekcje zostaną utworzone w katalogu o nazwie „zrzut” w „bieżącej” lokalizacji
źródło
Możesz to zrobić za pomocą polecenia mongodump
Wyeksportowane pliki zostaną utworzone w folderze ścieżka_docelowa \ twoja_nazwa_db (w tym przykładzie C: \ Users \ HP \ Desktop \ test)
Referencje: o7planning
źródło
Zdaję sobie sprawę, że jest to dość stare pytanie i że mongodump / mongorestore jest wyraźnie właściwą drogą, jeśli chcesz uzyskać 100% wierny wynik, w tym indeksy.
Potrzebowałem jednak szybkiego i brudnego rozwiązania, które prawdopodobnie byłoby zgodne z poprzednimi i nowymi wersjami MongoDB, pod warunkiem, że nie dzieje się nic dziwnego. I za to chciałem uzyskać odpowiedź na pierwotne pytanie.
Istnieją inne akceptowalne rozwiązania powyżej, ale ten potok uniksowy jest stosunkowo krótki i słodki:
To tworzy odpowiednio nazwany
.json
plik dla każdej kolekcji.Pamiętaj, że nazwa bazy danych („moja baza danych”) pojawia się dwukrotnie. Zakładam, że baza danych jest lokalna i nie musisz przekazywać poświadczeń, ale łatwo to zrobić zarówno z, jak
mongo
i zmongoexport
.Zauważ, że używam
grep -v
do odrzucaniasystem.indexes
, ponieważ nie chcę, aby starsza wersja MongoDB próbowała interpretować kolekcję systemową z nowszej. Zamiast tego zezwalam mojej aplikacji na wykonywanie zwykłychensureIndex
wywołań w celu odtworzenia indeksów.źródło
możesz utworzyć plik zip za pomocą następującego polecenia. Stworzy podany plik zip z bazą danych {nazwa_bazy}. Możesz później zaimportować następujący plik zip do bazy danych Mongo DB.
źródło
Oto, co działało dla mnie podczas przywracania wyeksportowanej bazy danych:
mongorestore -d 0 ./0 --drop
gdzie ./ zawierał wyeksportowane pliki bson. Pamiętaj, że
--drop
zastąpią istniejące dane.źródło
jeśli chcesz używać mongoexport i mongoimport do eksportowania / importowania każdej kolekcji z bazy danych, myślę, że to narzędzie może być dla Ciebie pomocne. Kilka razy korzystałem z podobnego narzędzia;
źródło
Jeśli chcesz wykonać kopię zapasową wszystkich dbs na serwerze, nie martwiąc się, że zostaną one wywołane, użyj następującego skryptu powłoki:
Używa to narzędzia mongodump, które utworzy kopię zapasową wszystkich baz danych, jeśli nie zostanie określony.
Możesz umieścić to w swoim kronice, a będzie ono działać tylko wtedy, gdy uruchomiony zostanie proces mongod. Stworzy również katalog kopii zapasowej, jeśli nie istnieje.
Każda kopia zapasowa bazy danych jest zapisywana w osobnym katalogu, dzięki czemu można przywracać poszczególne bazy danych z globalnego zrzutu.
źródło
Najpierw uruchom DB bazy danych Mongo - w tym celu przejdź do ścieżki jako ->
C: \ Program Files \ MongoDB \ Server \ 3.2 \ bin i kliknij plik mongod.exe , aby uruchomić serwer MongoDB.
Polecenie w systemie Windows, aby wyeksportować
C:> mongodump --host adres_ip zdalnego: 27017 --db -o C: / Users / Desktop / temp-folder
Polecenie w systemie Windows, aby zaimportować
C:> mongorestore --host = ip --port = 27017 -d C: / Users / Desktop / temp-folder / db-dir
źródło
źródło
Eksport:
mongo/bin> mongoexport -d webmitta -c domain -o domain-k.json
Import:
mongoimport -d dbname -c newCollecionname --file domain-k.json
Gdzie
źródło
Istnieje wiele opcji w zależności od tego, co chcesz zrobić
1) Jeśli chcesz wyeksportować bazę danych do innej bazy danych Mongo, powinieneś użyć
mongodump
. Spowoduje to utworzenie folderu plików BSON, które mają metadane, których JSON nie miałby.2) Jeśli chcesz wyeksportować swoją bazę danych do JSON, możesz jej użyć,
mongoexport
z wyjątkiem tego, że musisz to zrobić po jednej kolekcji na raz (jest to zgodne z projektem). Myślę jednak, że najłatwiej jest wyeksportować całą bazę danych,mongodump
a następnie przekonwertować na JSON.źródło
Dla zrzutu, twoja DB odłóż poniżej CMD
źródło
Aby wyeksportować w formacie JSON, wykonaj następujące czynności, które możesz zobaczyć.
źródło