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.

23voto

Bogdan D Punkte 4881

Durch die Zusammenstellung der Antworten von @Robse und @DanH (Hut ab!) habe ich die folgende Lösung gefunden, die mich vollkommen zufrieden stellt:

db.getCollectionNames().forEach( function(collection_name) { 
  if (collection_name.indexOf("system.") == -1) 
       db[collection_name].drop();
  else  
       db[collection_name].remove({});
});

Es bereinigt die Datenbank, indem es die Benutzersammlungen löscht und die Systemsammlungen leert.

1 Stimmen

Dieses Skript bereinigt alles innerhalb einer bestimmten Mongo-Datenbank. Es löscht alle Sammlungen in dieser Datenbank.

14voto

bhv Punkte 4750

Hier sind einige nützliche Löschvorgänge für Mongodb mit Mongo Shell

Um ein bestimmtes Dokument in Sammlungen zu löschen: db.mycollection.remove( {name:"stack"} )

Um alle Dokumente in Sammlungen zu löschen: db.mycollection.remove()

Um eine bestimmte Sammlung zu löschen: db.mycollection.drop()

um die Datenbank zu löschen: Gehen Sie zunächst zu dieser Datenbank, indem Sie use mydb Befehl und dann

db.dropDatabase()

11voto

sjas Punkte 16831

Für den Fall, dass Sie alles auf einmal löschen müssen: (alle Datenbanken auf einmal löschen)

mongo --quiet --eval 'db.getMongo().getDBNames().forEach(function(i){db.getSiblingDB(i).dropDatabase()})'

9voto

Verwenden Sie

[databaseName]
db.Drop+databaseName();

drop collection 

use databaseName 
db.collectionName.drop();

7voto

Wenn Sie nur eine Datenbank und ihre Untersammlungen löschen wollen, verwenden Sie dies:

  • use <database name>;
  • db.dropDatabase();

Wenn Sie alle Datenbanken in Mongo löschen wollen, dann verwenden Sie dies:

db.adminCommand("listDatabases").databases.forEach(function(d)
             {
              if(d.name!="admin" && d.name!="local" && d.name!="config")
                {
                 db.getSiblingDB(d.name).dropDatabase();
                }
             }
          );

0 Stimmen

Tolle Antwort... das ist wahrscheinlich das, worauf der Benutzer hinaus wollte

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