Ich habe meine Datenbank ein wenig umstrukturiert und brauche bestimmte Sammlungen nicht mehr. Es gibt jedoch viel zu viele von ihnen, um sie von Hand zu entfernen (Tausende tatsächlich). Jede der betreffenden Sammlungen beginnt mit "cache_" und enthält ein paar Indizes, die ich sicherstellen möchte, dass sie vollständig bereinigt sind.
Ich versuche zu verstehen, wie man die Mongo-Shell verwendet, um alle Sammlungsnamen zu durchlaufen und diejenigen Sammlungen zu entfernen, die mit "cache_" beginnen. Pro Anfragen & amp; Cursor-Dokumentation , ich verstehe, wie man Dokumente innerhalb einer Sammlung durchläuft, aber nicht wie man die MongoDB-Shell benutzt, um die Sammlungen in der Datenbank zu durchlaufen.
In Pseudo-Code ist das, was ich brauche:
%Vor%FWIW, ich habe nach "mongodb loop durch Sammlungsnamen" gesucht usw. und habe noch nichts gefunden, aber vielleicht suppige ich bei googlez = P
Zu einer verwandten Notiz ... sollte ich nach diesem Grad der Umstrukturierung ein db.repairDatabase()
oder irgendetwas der Sorte machen, um sicherzustellen, dass die fallengelassenen Indizes usw. alle schön und sauber sind?
Danke.
Verwenden Sie db.getCollectionNames()
, um alle Sammlungen abzurufen und in einem Array zu speichern .
Nur um eine weitere Antwort hinzuzufügen auf der Mongodb-Mailingliste
%Vor%Wahrscheinlich möchten Sie die lokalen / config / admin dbs nicht löschen, wie ich oben aufgeführt habe.
Das Folgende hat mir sehr geholfen, die Sammlungen zu entfernen, die durch Map Reduce-Jobs erstellt wurden. In meinem Fall wurden sie bei der lokalen Einrichtung automatisch gelöscht, aber aus irgendeinem Grund blieben sie auf dem Server hängen.
%Vor%Dies ist ähnlich wie Nishants Antwort, aber der Unterschied ist, dass ich keine Administratorrechte habe und db.adminCommand (gehostete Mongo-Instanz) nicht aufrufen kann.
Tags und Links mongodb