Robię rozwój na MongoDB. Dla celów całkowicie nie zła, czasami chcę zdmuchnąć wszystko w bazie danych - to jest usunąć każdą kolekcję i wszystko, co może leżeć i zacząć od zera. Czy istnieje jedna linia kodu, która pozwoli mi to zrobić? Punkty premiowe za podanie zarówno metody konsoli MongoDB, jak i metody sterownika MongoDB Ruby.Usuń wszystko w bazie danych MongoDB
Odpowiedz
Również z wiersza poleceń:
mongo DATABASE_NAME --eval "db.dropDatabase();"
Nie wierzę, że to działa w 2.4.6. Moje zapisy wciąż istnieją. –
użytkowania
[databaseName]
db.Drop+databaseName();
drop collection
use databaseName
db.collectionName.drop();
Słuchajcie kilka w pełni korzystać z operacji Delete MongoDB wykorzystujące Mongo skorupę
Aby usunąć konkretnego dokumentu w kolekcji: db.mycollection.remove({name:"stack"})
Aby usunąć wszystkie dokumenty w kolekcjach: db.mycollection.remove()
Aby usunąć kolekcję: db.mycollection.drop()
usunąć bazy danych: Idź do tej bazy danych za pomocą polecenia use mydb
a następnie
db.dropDatabase()
Miałem ten sam problem, kiedy potrzebne, aby wyzerować wszystkie kolekcje ale nie chciał stracić żadnych użytkowników bazy danych. Użyj następującego wiersza kodu, jeśli chcesz, aby zapisać konfigurację użytkownika do bazy danych: „System”
use <whichever database>
db.getCollectionNames().forEach(function(c) { if (c.indexOf("system.") == -1) db[c].drop(); })
Kod ten będzie przejść przez wszystkich nazw zbiórki z jednej bazy danych i upuść te, które nie zaczynają się od .
Jak wspomniano w @DanH, może się okazać, że bardziej niezawodne jest użycie 'remove' zamiast' drop'. Opcja 'remove' wydaje się utrzymywać ograniczenia na polach kolekcji, które usuwasz. Kiedy zastosowaliśmy metodę 'drop', ograniczenie' unique' na jednym z naszych pól nie zostało uwzględnione po kropli. – Scottymac
@Scottymac - jeszcze lepiej, dodaj gałąź 'else' (do' if (c.indexOf ("system.") == -1) '), która robi' remove' zamiast 'drop'. W ten sposób nie pozostaniesz z pustymi kolekcjami, jeśli ich nie używasz. –
Lepsze niż 'db [c]', użyj 'db.getCollection (c)', co pozwala uniknąć [błędów, gdy nazwy kolekcji są cyframi] (http: //stackoverflow.com/a/24657123/70170). –
czy chcesz usunąć tylko baza i jego sub-kolekcje użyj:
use <database name>;
db.dropDatabase();
jeśli chcesz usunąć wszystkie bazy danych w Mongo następnie użyć tego :
db.adminCommand("listDatabases").databases.forEach(function(d)
{
if(d.name!="admin" && d.name!="local" && d.name!="config")
{
db.getSiblingDB(d.name).dropDatabase();
}
}
);
Świetna odpowiedź ... prawdopodobnie to właśnie otrzymywał użytkownik – robert
Poszłam za db.dropDatabase()
trasa przez długi czas, jednak jeśli próbujesz użyć tego do wycierania bazy danych pomiędzy przypadkami testowymi, może się okazać, że problemy z ograniczeniami indeksu nie są honorowane po spadku bazy danych.W rezultacie konieczne będzie albo zmuszani o z ensureIndexes lub prostsze trasa byłoby unikanie dropDatabase alltogether i po prostu usuwając z każdej kolekcji w pętli, takich jak:
db.getCollectionNames().forEach(
function(collection_name) {
db[collection_name].remove()
}
);
W moim przypadku biegałam to z linii poleceń przy użyciu:
mongo [database] --eval "db.getCollectionNames().forEach(function(n){db[n].remove()});"
Dziękuję za tę sugestię, używaliśmy' db [nazwa_kolekcji] .drop() 'i wyświetlał te same problemy opisałeś za pomocą metody 'db.dropDatabase()'. Przełączanie 's/drop/remove /' działało wspaniale! – Scottymac
Zauważyłem, że 'remove()' nie działa dobrze na MongoDB dla Windows, i zamiast tego musiałem zrobić 'remove ({})', który działa zarówno na OSX i Windows. – DanH
Dzięki za cynk, jesteśmy na platformie Linux, ale warto spojrzeć na nieco dalej. – Scottymac
kompilując odpowiedzi od @Robse i @DanH (!) Kudos, mam następujące rozwiązanie, które całkowicie spełnia mnie:
db.getCollectionNames().forEach(function(collection_name) {
if (collection_name.indexOf("system.") == -1)
db[collection_name].drop();
else
db.collection_name.remove({});
});
Połącz się z bazą danych, uruchom kod.
Czyści bazę danych, upuszczając kolekcje użytkowników i opróżniając zbiory systemowe.
Działa to całkiem dobrze. Dokładnie to, czego potrzebowałem. –
Najprostszy sposób, aby usunąć bazę powiedzieć blog:
> use blog
switched to db blog
> db.dropDatabase();
{ "dropped" : "blog", "ok" : 1 }
Dla programistów Meteor.
otworzyć drugie okno terminalu podczas uruchamiania aplikacji w
localhost:3000
.W folderze projektu uruchom,
meteor mongo
.coolName = new Mongo.Collection('yourCollectionName');
Następnie wystarczy wpisać
db.yourCollectionName.drop();
Będziesz automatycznie zobaczyć zmiany w lokalnym serwerze.
Dla wszystkich pozostałych.
db.yourCollectionName.drop();
Aby usunąć wszystkie DB użyć:
for i in $(mongo --quiet --host $HOSTNAME --eval "db.getMongo().getDBNames()" | tr "," " ");
do mongo $i --host $HOSTNAME --eval "db.dropDatabase()";
done
use <dbname>
db.dropAllUsers()
db.dropAllRoles()
db.dropDatabase()
MongoDB db.dropDatabase() documentation wyjaśniając zmiany wprowadzone w 2.6:
Zmieniono w wersji 2.6: To polecenie nie usuwa użytkownicy powiązani z bieżącą bazą danych.
- Lista wszystkie dostępne DBS pokaż DBS
- Wybierz niezbędny db użytku
- usunąć bazę danych db.dropDatabase() // Kilka dodatkowych poleceń
- Lista wszystkie kolekcje dostępne w db występów kolekcjach
- usunąć kolekcję specyfikacja db.collection.drop()
nadzieję, że pomoże
- 1. Usuń duplikat w MongoDB
- 2. Tworzenie schematu kolekcji w bazie danych mongolab mongodb z node.js
- 3. Usuń wszystko między dwoma znakami
- 4. Usuń wszystko i przesłać nową wersję
- 5. Czy można przechowywać javascript w bazie danych?
- 6. Wymień/usuń wszystko między dwoma znakami
- 7. Jak utrzymać strukturę danych wykresu w relacyjnej bazie danych?
- 8. Usuń wszystko w nawiasach stosując gsub w R
- 9. Przewidywanie brakujących wartości danych w bazie danych
- 10. Wstawianie rekordów zbioru danych w bazie danych
- 11. Android istnieje() w bazie danych?
- 12. Html w mojej bazie danych!
- 13. MySQL typ danych w bazie
- 14. Kwerendy hibernacji w bazie danych
- 15. Zachowaj ustawienia w bazie danych
- 16. Zwiększanie licznika w bazie danych
- 17. Jak najlepiej reprezentują adresów w bazie danych
- 18. Dokonywanie automatyczne pole DateTime w bazie danych?
- 19. Wyrażenie regularne, usuń wszystko po ostatnim ukośniku w przód
- 20. Usuń wszystko w nawiasach klienckich przy użyciu regex
- 21. Usuń znak "@" i wszystko inne po nim w Ruby
- 22. Znajdź podobne wiersze w bazie danych
- 23. Czy procesy współbieżne mogą zapisywać dane w udostępnionej bazie danych?
- 24. Kompleksowe sortowanie w bazie danych MySQL
- 25. Jak odświeżyć mój ListView po zmianach w bazie danych?
- 26. Wiadomości zawieszone w Biztalk w bazie danych
- 27. Struktura encji nie zapisuje wpisów danych w bazie danych
- 28. Zapisywanie danych w języku arabskim w bazie danych MySQL
- 29. Zachowaj dwie pierwsze linie tekstu, usuń wszystko inne.
- 30. Trwałe DataContract jako XML w bazie danych
Note : Nie spowoduje to usunięcia bazy danych, a jedynie całej jej zawartości. – connorbode
@connorbode Dzięki za to. Przeczytałem i natychmiast: ** "B-But OP nie chce usunąć bazy danych!" **. Bardzo myląca komenda !! –
Należy używać z rozwagą: jeśli jesteś w zaciemnionym środowisku za pomocą wiredTiger i nie masz bazy danych użytkowników i wywołujesz dropDatabase, baza danych zostanie usunięta i może ponownie pojawić się jako podstawowa w innym fragmencie po dodaniu nowych rekordów. –