532 Stimmen

Alles in einer MongoDB-Datenbank löschen

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.

1voto

Antonio Bardazzi Punkte 2747
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.

1voto

kevinadi Punkte 12595

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X