Mam bazę danych Mongo, której nie utworzyłem ani nie zaprojektowałem, czy istnieje dobry sposób na introspekcję bazy danych lub wydrukowanie struktury, która pozwoli uzyskać informacje o tym, jakie typy dane są przechowywane, jak typy danych są zagnieżdżone, itp.?Jak mogę odkryć strukturę bazy danych Mongo?
Odpowiedz
Tu jest rzeczywiście narzędzie, aby pomóc tutaj nazwie odmiany:
http://blog.mongodb.org/post/21923016898/meet-variety-a-schema-analyzer-for-mongodb
Można zobaczyć repo GitHub na tym tutaj: https://github.com/variety/variety
I prawdopodobnie powinien ostrzec, że:
- Używa MR do wykonania swoich zadań
- Używa niektórych o te pytania, które mogą doprowadzić do ustabilizowania produkcji pod względem wydajności.
Jako takie, polecam uruchomić to na serwerze rozwoju lub ukrytym węźle repliki lub coś takiego.
W zależności od rozmiaru i głębokości dokumentów może to potrwać bardzo długo, zanim zrozumiemy szorstką strukturę bazy danych, ale w końcu ją otrzymamy.
Wystarczy zapytanie do bazy danych, uruchamiając następujące polecenia w powłoce Mongo:
use mydb //this switches to the database you want to query
show collections //this command will list all collections in the database
db.collectionName.find().pretty() //this will show all documents in the database in a readable format; do the same for each collection in the database
Powinieneś być w stanie zbadać strukturę dokumentu.
Co zrobić, jeśli niektóre dokumenty różnią się od innych? Ta metoda nie pokaże WSZYSTKICH pól lub całej przechowywanej struktury. – Sammaye
@ Sammaye masz rację ... będzie potrzebował skryptu, aby dotrzeć do wszystkich dokumentów i porównać wszystkie klucze, a następnie wydrukować strukturę drzewa jest prawdopodobnie dobrym wizualnym sposobem pokazania całej struktury i uczynienia jej strawną. – br3w5
@Sammaye @ssbrewster: Możesz użyć skryptu [this] (https://gist.github.com/hkasera/9386709), aby uzyskać strukturę swojej kolekcji. Daj mi znać, jeśli to będzie pomocne. 'mongo mongo-struc.js> struc.json' – hkasera
Zalecam ograniczenie zestawu wyników zamiast wydawania nieograniczonego polecenia find.
use mydb
db.collectionName.find().limit(10)
var z = db.collectionName.find().limit(10)
Object.keys(z[0])
Object.keys(z[1])
Pomoże to zrozumieć strukturę bazy danych lub jej brak.
Jedynym problemem jest to, że nie ma sposobu, aby powiedzieć, że liczba, którą otrzymasz, reprezentuje strukturę bazy danych, możesz mieć 1000001 rekordów i ograniczyć 1000000 z nich, ale przegapisz istniejące pole w ostatnim dokumencie, ponieważ inny 1000000 go nie ma – Sammaye
Zgadzam się z tobą tam. Jednak szybkie i brudne może wystarczyć. Znam wiele przypadków użycia, w których mongo jest używane jako półstrukturalny magazyn danych podobny do tradycyjnego RDMS. W drugim przypadku technika ta nie zapewni pełnej struktury, ale może przynajmniej zapewnić coś szybkiego. Użyłem narzędzia odmiany i lubię go do kompleksowej analizy schematu. – Paul
Prawda, a gdzieś istnieje narzędzie, zapomniałem jego nazwy, która w rzeczywistości bierze 10 zapytań o ograniczone 10 zapytań, próbując stworzyć wydajny analizator schematów. – Sammaye
To drukować nazwę i typ
var schematodo = db.collection_name.findOne()
for (var key in schematodo) { print (key, typeof key) ; }
Jest to narzędzie open source, że ja wraz z moim przyjacielem, stworzyły - https://pypi.python.org/pypi/mongoschema/
Jest to biblioteka Pythona z całkiem proste stosowanie. Możesz go wypróbować (nawet przyczynić się).
Jedną opcją jest użycie Mongoeye. Jest to narzędzie open-source podobne do Variety.
Różnica polega na tym, że Mongoeye to samodzielny program (Mongo Shell nie jest wymagany) i ma więcej funkcji (histogramy, najczęstsze wartości itp.).
Kilka dni temu znalazłem GUI klienta MongoDB Compass z niektórymi ładne wizualizacje. Zobacz product overview. Pochodzi bezpośrednio od osób mongodów i zgodnie z ich dokumentem:
MongoDB Compass został zaprojektowany, aby umożliwić użytkownikom łatwą analizę i zrozumienie zawartości ich kolekcji danych w MongoDB ...
- 1. Jak mogę odkryć strukturę bazy danych PostgreSQL?
- 2. Jak mogę dalej optymalizować tę strukturę danych?
- 3. Jak uzyskać strukturę tabeli bazy danych w java?
- 4. Jak wstawić rekord z jednej bazy danych mongo do drugiej?
- 5. Zaktualizuj strukturę DataSet w Visual Studio, aby dopasować nową strukturę bazy danych SQL
- 6. Zweryfikuj strukturę bazy danych? (SQLite w C++/Qt)
- 7. Jak utrzymać strukturę danych wykresu w relacyjnej bazie danych?
- 8. Mongoose nie czyta z dodatkowej bazy Mongo
- 9. Przywracanie zrzutu bazy danych starszej wersji Mongo do nowej wersji Mongo
- 10. Jak odkryć widok z animacjami
- 11. Jak rekurencyjnie przejść strukturę zagnieżdżonych danych hashowych?
- 12. Jak mogę odkryć rozmiar/długość (w bajtach) std :: vector?
- 13. Jak mogę odkryć bibliotekę GHC za pomocą Runhaskell
- 14. Jak zaimplementować strukturę zbiorów danych w Javie?
- 15. Jak spłaszczyć strukturę w iskrowegowej ramce danych?
- 16. Jak mogę dostosować strukturę katalogów Jasmine?
- 17. Jak mogę spłaszczyć strukturę Future [T]?
- 18. Czy mogę zaszyfrować hasło bazy danych SQLite?
- 19. Jak odzyskać dane z bazy danych Firebase, która ma strukturę zagnieżdżonych tablic i obiektów?
- 20. Jak wyświetlić listę wszystkich baz danych w powłoce Mongo?
- 21. Jak indeksować kolumnę bazy danych
- 22. Czy PHP ma strukturę danych zestawu?
- 23. Jak odkryć pochowany regresję w GGPLOT
- 24. Jak mogę korzystać z Rails/Devise bez bazy danych?
- 25. Jak mogę znaleźć ostatnią aktualizację bazy danych PostgreSQL?
- 26. Jak mogę usunąć wszystkie tabele z mojej bazy danych?
- 27. Jak mogę uzyskać zrzut bazy danych postgresu tekstowego na heroku?
- 28. Jak mogę bezpiecznie utworzyć kopię zapasową ogromnej bazy danych?
- 29. Jak mogę słuchać do bazy danych SQL Server zmienia
- 30. Jak mogę uzyskać nazwy pól tabeli bazy danych?
Nowy adres URL i został niedawno zaktualizowany na dzień dzisiejszy 2014-10-14. https://github.com/variety/variety Odmiana, analizator schematów dla MongoDB. Bardzo pomocne! – AnneTheAgile