Ich entwickle mit MongoDB. Aus ganz und gar nicht bösen Gründen möchte ich manchmal alles in einer Datenbank löschen, d. h. jede einzelne Auflistung und alles, was sonst noch so herumliegt, und von vorne anfangen. Gibt es eine einzige Codezeile, mit der ich das tun kann? Bonuspunkte für die Angabe sowohl einer MongoDB-Konsolenmethode als auch einer MongoDB-Ruby-Treibermethode.
Antworten
Zu viele Anzeigen?use <dbname>
db.dropAllUsers()
db.dropAllRoles()
db.dropDatabase()
Dokumentation zu MongoDB db.dropDatabase() zur Erläuterung der in 2.6 eingeführten Änderung:
Geändert in Version 2.6: Dieser Befehl löscht nicht die mit der aktuellen Datenbank verbundenen Benutzer.
In MongoDB 3.2 und neueren Versionen, Mongo().getDBNames()
im mongo
Shell gibt eine Liste der Datenbanknamen auf dem Server aus:
> Mongo().getDBNames()
[ "local", "test", "test2", "test3" ]
> show dbs
local 0.000GB
test 0.000GB
test2 0.000GB
test3 0.000GB
A forEach()
Schleife über das Array könnte dann den Aufruf dropDatabase()
um alle aufgelisteten Datenbanken zu löschen. Optional können Sie einige wichtige Datenbanken, die Sie nicht löschen möchten, auslassen. Zum Beispiel:
Mongo().getDBNames().forEach(function(x) {
// Loop through all database names
if (['admin', 'config', 'local'].indexOf(x) < 0) {
// Drop if database is not admin, config, or local
Mongo().getDB(x).dropDatabase();
}
})
Beispiellauf:
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.000GB
test2 0.000GB
test3 0.000GB
> Mongo().getDBNames().forEach(function(x) {
... if (['admin', 'config', 'local'].indexOf(x) < 0) {
... Mongo().getDB(x).dropDatabase();
... }
... })
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
- See previous answers
- Weitere Antworten anzeigen