Ich entwickle MongoDB. Aus absolut bösen Gründen möchte ich manchmal alles in einer Datenbank wegblasen - das heißt, jede einzelne Sammlung und alles, was sonst noch herumliegt, löschen und von vorne beginnen. Gibt es eine einzige Codezeile, mit der ich dies tun kann? Bonuspunkte für die Vergabe einer MongoDB-Konsolenmethode und einer MongoDB Ruby-Treibermethode.
454
db.dropAllUsers();
Auch von der Kommandozeile:
quelle
Ich hatte das gleiche Problem, als ich alle Sammlungen zurücksetzen musste, aber keine Datenbankbenutzer verlieren wollte. Verwenden Sie die folgende Codezeile, wenn Sie die Benutzerkonfiguration für die Datenbank speichern möchten:
Dieser Code durchsucht alle Sammlungsnamen aus einer Datenbank und löscht diejenigen, die nicht mit "system" beginnen.
quelle
remove
anstelle von zu verwendendrop
. Dieremove
Option scheint Einschränkungen für Felder in den Sammlungen beizubehalten, die Sie löschen. Als wir diedrop
Methode verwendeten, wurde dieunique
Einschränkung für eines unserer Felder nach dem Ablegen nicht berücksichtigt.else
Zweig (zumif (c.indexOf("system.") == -1)
) hinzu, der diesremove
anstelle von tutdrop
. Auf diese Weise bleiben Ihnen keine leeren Sammlungen mehr übrig, wenn Sie sie nicht mehr verwendendb[c]
, Verwendungdb.getCollection(c)
, die Fehler vermeidet , wenn Sammlungsnamen Ziffern sind .db.getCollectionNames().forEach(function(c) { if (c.indexOf("system.") == -1) db.getCollection(c).drop(); })
Ich habe die
db.dropDatabase()
Route lange Zeit verfolgt. Wenn Sie jedoch versuchen, die Datenbank zwischen den Testfällen zu löschen, können Probleme auftreten, wenn Indexeinschränkungen nach dem Löschen der Datenbank nicht berücksichtigt werden. Infolgedessen müssen Sie entweder mit sureIndexes herumspielen, oder eine einfachere Route würde darin bestehen, die dropDatabase insgesamt zu vermeiden und sie einfach aus jeder Sammlung in einer Schleife zu entfernen, wie z.In meinem Fall habe ich dies über die Befehlszeile ausgeführt, indem ich:
quelle
db[collection_name].drop()
und der dieselben Probleme aufwies, die Sie mit derdb.dropDatabase()
Methode beschrieben haben. Das Schaltens/drop/remove/
hat hervorragend funktioniert!remove()
das unter MongoDB für Windows nicht gut funktioniert, und stattdessen musste ich das tun,remove({})
was sowohl unter OSX als auch unter Windows funktioniert.Durch das Zusammenstellen der Antworten von @Robse und @DanH (Lob!) Habe ich die folgende Lösung, die mich vollkommen zufriedenstellt:
Stellen Sie eine Verbindung zu Ihrer Datenbank her und führen Sie den Code aus.
Es bereinigt die Datenbank, indem die Benutzersammlungen gelöscht und die Systemsammlungen geleert werden.
quelle
Hören Sie, einige verwenden vollständige Löschvorgänge für Mongodb mit Mongo Shell
So löschen Sie ein bestimmtes Dokument in Sammlungen:
db.mycollection.remove( {name:"stack"} )
So löschen Sie alle Dokumente in Sammlungen:
db.mycollection.remove()
So löschen Sie die Sammlung:
db.mycollection.drop()
So löschen Sie die Datenbank: Gehen Sie zuerst per
use mydb
Befehl zu dieser Datenbank und dannquelle
Verwenden
quelle
für den Fall, dass Sie alles auf einmal löschen müssen: (Löschen Sie alle Datenbanken auf einmal)
quelle
quelle
Wenn Sie nur eine Datenbank und ihre Untersammlungen löschen möchten, verwenden Sie Folgendes:
use <database name>;
db.dropDatabase();
Wenn Sie alle Datenbanken in Mongo löschen möchten, verwenden Sie Folgendes:
quelle
Der einfachste Weg, eine Datenbank zu löschen, sagt Blog:
quelle
Für Meteor-Entwickler.
Öffnen Sie ein zweites Terminalfenster, während Sie Ihre App ausführen
localhost:3000
.Führen Sie im Ordner Ihres Projekts Folgendes aus :
meteor mongo
.coolName = new Mongo.Collection('yourCollectionName');
Dann einfach eingeben
db.yourCollectionName.drop();
Sie sehen automatisch die Änderungen auf Ihrem lokalen Server.
Für alle anderen.
db.yourCollectionName.drop();
quelle
Ich hoffe, das hilft
quelle
ich bevorzuge
Über
Wenn Ihre Sammlung eine spezielle Sammlung war, dh eine begrenzte Sammlung oder eine Sammlung mit einem Feld, das als eindeutig markiert ist, wird durch Löschen die Sammlung selbst gelöscht, und wenn die Sammlung erneut erstellt wird, handelt es sich um eine normale Sammlung. Sie müssen die Eigenschaften erneut definieren. Verwenden Sie
remove()
diese Option, um die Dokumente zu löschen, ohne die Sammlung zu entfernen und das Verhalten der Sammlung zu beeinträchtigen.quelle
drop()
nahezu augenblicklich erfolgt undremove({})
Ihre Datenbank für Minuten oder Dutzende von Minuten sperrt (abhängig von der Sammlungsgröße).Um alle DBs zu löschen, verwenden Sie:
quelle
Dokumentation zu MongoDB db.dropDatabase (), in der die in 2.6 eingeführte Änderung erläutert wird:
quelle
In MongoDB 3.2 und höher wird
Mongo().getDBNames()
in dermongo
Shell eine Liste der Datenbanknamen auf dem Server ausgegeben:Eine
forEach()
Schleife über das Array könnte dann aufrufendropDatabase()
, um alle aufgelisteten Datenbanken zu löschen. Optional können Sie einige wichtige Datenbanken überspringen, die Sie nicht löschen möchten. Zum Beispiel:Beispiellauf:
quelle