Więc nie wiem zbyt wiele o MongoDB
. Mam za RoboMongo
pomocą którego łączę się z MongoDB. Muszę zrobić to - w tym MongoDB jest kolekcja. Chcę wyeksportować dane z tej kolekcji, aby móc je zapisać w pliku.
Użyłem interfejsu, aby otworzyć dane z kolekcji jako tekst, zrobiłem Ctrl+ Ai wkleiłem do pliku tekstowego. Jednak odkryłem, że nie wszystkie dane są kopiowane, a także, że w danych tekstowych było wiele komentarzy, które w naturalny sposób psują JSON.
Zastanawiam się, czy RoboMongo ma Export As JSON
możliwość wykonania czystego eksportu.
Wszelkie wskazówki są mile widziane!
mongoexport
narzędzia wiersza poleceń.mongoexport --uri='mongodb://[email protected]:27017/marketing' --collection=contacts --out=contacts.json
Odpowiedzi:
Możesz użyć
tojson
do przekonwertowania każdego rekordu na JSON w skrypcie powłoki MongoDB .Uruchom ten skrypt w RoboMongo:
Spowoduje to wyświetlenie wszystkich wyników jako tablicy podobnej do JSON.
Wynik nie jest tak naprawdę JSON! Niektóre typy, takie jak daty i identyfikatory obiektów, są drukowane jako wywołania funkcji JavaScript, np
ISODate("2016-03-03T12:15:49.996Z")
..Może nie być bardzo wydajne w przypadku dużych zestawów wyników, ale można ograniczyć zapytanie. Alternatywnie możesz użyć
mongoexport
.źródło
tojson(db.getCollection(...).find(...)["_batch"])
do wyprowadzenia całej bieżącej partii uzyskanej z serwera.["_batch"]
? Czy możesz podać przykład, jak tego używać? Wypróbowałem to z Robo 3T 1.2.1, ale wyświetla tylko komunikat „Skrypt został wykonany pomyślnie, ale nie ma wyników do wyświetlenia”.tojson(db.getCollection(...).find(...).toArray())
.Szybki i nieprzyjemny sposób: po prostu wpisz zapytanie jako
db.getCollection('collection').find({}).toArray()
i kliknij prawym przyciskiem myszyCopy JSON
. Wklej dane w wybranym edytorze.źródło
Funkcjonalność powłoki Robomongo rozwiąże problem. W moim przypadku potrzebowałem kilku kolumn w formacie CSV.
źródło
Istnieje kilka GUI MongoDB, niektóre z nich mają wbudowaną obsługę eksportowania danych. Pełną listę GUI MongoDB znajdziesz na http://mongodb-tools.com
Pytałeś o wyeksportowanie wyników zapytania, a nie o eksportowanie całych kolekcji. Wypróbuj 3T MongoChef MongoDB GUI , to narzędzie obsługuje określone przypadki użycia.
źródło
powiesz „eksportuj do pliku” jak w arkuszu kalkulacyjnym? lubisz .csv?
IMO to NAJŁATWIEJSZY sposób na zrobienie tego w Robo 3T (dawniej robomongo):
W prawym górnym rogu GUI Robo 3T znajduje się przycisk „Wyświetl wyniki w trybie tekstowym”, kliknij go i skopiuj wszystko
wklej wszystko na tej stronie: https://json-csv.com/
kliknij przycisk pobierania, a teraz masz go w arkuszu kalkulacyjnym.
Mam nadzieję, że to komuś pomoże, bo chciałbym, żeby Robo 3T miał możliwości eksportowe
źródło
Nie uruchamiaj tego polecenia w powłoce, wprowadź ten skrypt w wierszu polecenia, podając nazwę bazy danych, nazwę kolekcji i nazwę pliku, wszystkie zastępując symbole zastępcze.
Mi to pasuje.
źródło
Nie sądzę, że robomongo ma taką funkcję. Więc lepiej użyj funkcji mongodb jako mongoexport dla określonej kolekcji.
Ale jeśli szukasz rozwiązania do tworzenia kopii zapasowych, lepiej go użyć
źródło
Rozwijając odpowiedź Anisha, chciałem czegoś, co mógłbym zastosować do dowolnego zapytania, aby automatycznie wyświetlić wszystkie pola, zamiast definiować je w instrukcji print. Prawdopodobnie można to uprościć, ale było to coś szybkiego i brudnego, co działa świetnie:
źródło
Jeśli chcesz używać mongoimport , będziesz chciał wyeksportować w ten sposób:
źródło
Korzystanie ze skryptu powłoki robomongo:
Korzystanie z polecenia eksportu i importu mongodb
Możesz dodać
--jsonArray
parametr / flagę do swojegomongoexport
polecenia, co spowoduje wyeksportowanie wyniku jako pojedynczej tablicy JSON.Następnie
--jsonArray
ponownie określ flagę podczas importowania.Lub usuń początkowy i końcowy nawias tablicowy [] w pliku, a następnie zmodyfikowany i wyeksportowany plik zostanie zaimportowany za pomocą
mongoimport
polecenia bez--jsonArray
flagi.Więcej o eksporcie tutaj: https://docs.mongodb.org/manual/reference/program/mongoexport/#cmdoption--jsonArray
Importuj tutaj: https://docs.mongodb.org/manual/reference/program/mongoimport/#cmdoption--jsonArray
źródło
Miałem ten sam problem, a uruchomienie skryptu w robomongo (Robo 3T 1.1.1) również nie pozwala na kopiowanie wartości i nie było też opcji eksportu. Najlepszym sposobem, w jaki mogłem to osiągnąć, jest użycie mongoexport, jeśli mongodb jest zainstalowany na twoim lokalnym, możesz użyć mongoexport do połączenia się z bazą danych na dowolnym serwerze i wyodrębnienia danych
Aby połączyć się z danymi na serwerze zdalnym i plikiem wyjściowym csv, uruchom następujący mongoexport w wierszu poleceń
fieldFile: pomaga wyodrębnić żądane kolumny, np. zawartość pliku fields.txt może być po prostu:
aby wyodrębnić tylko wartości z kolumny „userId”
Dane na serwerze zdalnym, plik wyjściowy json:
spowoduje to wyodrębnienie wszystkich pól do pliku json
dane na hoście lokalnym (mongodb powinien działać na hoście lokalnym)
Źródła: https://docs.mongodb.com/manual/reference/program/mongoexport/#use
źródło
Rozwiązanie:
Gdzie:
baza danych ->
nazwa kolekcji serwera pozornego ->
nazwa pliku wyjściowego api_defs -> childChoreRequest.json
źródło
Rozszerzenie odpowiedzi Floriana Wintera dla osób chcących wygenerować gotowe do wykonania zapytanie.
drop
iinsertMany
zapytaj używająccursor
:Jego wynik będzie wyglądał następująco:
źródło
źródło