Je suis en développement sur MongoDB. À des fins totalement non-malveillantes, je veux parfois tout balayer dans une base de données, c'est-à-dire supprimer toutes les collections, et tout ce qui traîne ailleurs, et recommencer à zéro. Y a-t-il une seule ligne de code qui me laisse faire ça? Points bonus pour donner à la fois une méthode de console MongoDB et une méthode de pilote MongoDB Ruby.Tout supprimer dans une base de données MongoDB
Répondre
En outre, à partir de la ligne de commande:
mongo DATABASE_NAME --eval "db.dropDatabase();"
Je ne crois pas que cela fonctionne en 2.4.6. Mes enregistrements existent toujours. –
Utilisez
[databaseName]
db.Drop+databaseName();
drop collection
use databaseName
db.collectionName.drop();
Entendre quelques utiliser des opérations complètes de suppression pour MongoDB en utilisant shell mongo
Pour supprimer document particulier dans les collections: db.mycollection.remove({name:"stack"})
Pour effacer tous les documents dans les collections: db.mycollection.remove()
Pour supprimer la collection: db.mycollection.drop()
pour supprimer la base de données: premier rendez-vous à cette base de données par commande use mydb
puis
db.dropDatabase()
J'ai eu le même problème, quand je avais besoin de réinitialiser toutes les collections mais ne voulait pas perdre d'utilisateurs de base de données. Utilisez la ligne de code suivante, si vous souhaitez enregistrer la configuration de l'utilisateur pour la base de données:
use <whichever database>
db.getCollectionNames().forEach(function(c) { if (c.indexOf("system.") == -1) db[c].drop(); })
Ce code passera par tous les noms de collection d'une base de données et déposez ceux qui ne commence pas par « système ». .
Comme mentionné par @DanH, vous pouvez trouver plus fiable d'utiliser 'remove' à la place de' drop'. L'option 'remove' semble maintenir des contraintes sur les champs des collections que vous effacez. Lorsque nous avons utilisé la méthode 'drop', la contrainte' unique' sur l'un de nos champs n'a pas été respectée après la suppression. – Scottymac
@Scottymac - mieux encore, ajoutez une branche 'else' (au' si (c.indexOf ("system.") == -1) ') qui fait' remove' au lieu de 'drop'. De cette façon, il ne vous reste plus de collections vides si vous ne les utilisez plus –
Mieux que 'db [c]', utilisez 'db.getCollection (c)' qui évite [les erreurs lorsque les noms de collection sont des chiffres] (http: //stackoverflow.com/a/24657123/70170). –
si vous souhaitez supprimer uniquement une base de données et ses sous-collections utilisent ceci:
use <database name>;
db.dropDatabase();
si vous souhaitez supprimer toutes les bases de données mongo utilisez cette :
db.adminCommand("listDatabases").databases.forEach(function(d)
{
if(d.name!="admin" && d.name!="local" && d.name!="config")
{
db.getSiblingDB(d.name).dropDatabase();
}
}
);
Bonne réponse ... c'est probablement ce que l'utilisateur recevait à – robert
J'ai suivi le db.dropDatabase()
itinéraire pendant une longue période, cependant si vous essayez d'utiliser ceci pour effacer la base de données entre les cas de test, vous pouvez éventuellement trouver des problèmes avec les contraintes d'index qui ne sont pas honorées après la suppression de la base de données.Par conséquent, vous aurez besoin soit de déconner avec ensureIndexes, ou un itinéraire plus simple serait d'éviter la DropDatabase alltogether et juste retirer de chaque collection dans une boucle telle que:
db.getCollectionNames().forEach(
function(collection_name) {
db[collection_name].remove()
}
);
Dans mon cas, je courais ce de la ligne de commande en utilisant:
mongo [database] --eval "db.getCollectionNames().forEach(function(n){db[n].remove()});"
Merci pour cette suggestion, nous utilisions' db [collection_name] .drop() 'et il présentait les mêmes problèmes vous l'avez décrit avec la méthode 'db.dropDatabase()'. Changer le 's/drop/remove /' a fonctionné avec brio! – Scottymac
J'ai trouvé que 'remove()' ne fonctionne pas bien sur MongoDB pour Windows, et que j'ai dû faire 'remove ({})' qui fonctionne à la fois sur OSX et sur Windows. – DanH
Merci pour le conseil, nous sommes sur une plate-forme Linux, mais cela vaut la peine d'examiner un peu plus loin. – Scottymac
En compilant les réponses de @Robse et @DanH (!) kudos, j'ai la solution suivante qui me satisfait complètement:
db.getCollectionNames().forEach(function(collection_name) {
if (collection_name.indexOf("system.") == -1)
db[collection_name].drop();
else
db.collection_name.remove({});
});
Connectez-vous à votre base de données, exécutez le code.
Il nettoie la base de données en supprimant les collections d'utilisateurs et en vidant les collections système.
Cela fonctionne plutôt bien. Exactement ce dont j'avais besoin. –
Simplest moyen de supprimer une base de données dire blog:
> use blog
switched to db blog
> db.dropDatabase();
{ "dropped" : "blog", "ok" : 1 }
Pour les développeurs Meteor.
Ouvrez une seconde fenêtre de terminal lors de l'exécution de votre application dans
localhost:3000
. Dans le dossier de votre projet, exécutezmeteor mongo
.coolName = new Mongo.Collection('yourCollectionName');
simplement Entrez ensuite
db.yourCollectionName.drop();
Vous verrez automatiquement les changements dans votre serveur local.
Pour tout le monde.
db.yourCollectionName.drop();
Pour supprimer tous les blocs de données utilisent:
for i in $(mongo --quiet --host $HOSTNAME --eval "db.getMongo().getDBNames()" | tr "," " ");
do mongo $i --host $HOSTNAME --eval "db.dropDatabase()";
done
use <dbname>
db.dropAllUsers()
db.dropAllRoles()
db.dropDatabase()
MongoDB db.dropDatabase() documentation expliquant la modification introduite en 2.6:
Changé dans la version 2.6: Cette commande ne supprime pas les utilisateurs associés à la base de données en cours.
- Liste tous les dbs disponibles dbs show
- Choisissez le nécessaire db utilisation
- supprimer la base db.DropDatabase() // quelques commandes supplémentaires
- Liste toutes les collections disponibles dans une base collections montrent
- Supprimer une collection de spécifications db.collection.drop()
espoir qui aide
- 1. mongodb comme round-robin-base de données
- 2. Base de données (MongoDB) question de performance
- 3. Comment supprimer une référence dans mongodb?
- 4. Base de données de plus de 2 Go dans MongoDB
- 5. comment accéder à la base de données mongodb dans scala?
- 6. Comment supprimer une base de données MySQL?
- 7. MongoDB DBRef ON SUPPRIMER CASCADE
- 8. comment supprimer une entrée dans la base de données de contenu tout en supprimant l'élément de liste
- 9. Base de données d'arborescence binaire brute ou MongoDb/MySQL/Etc?
- 10. Enregistrement d'une ligne supprimée dans une base de données à supprimer plus tard dans une base de données
- 11. Stockage des données de relation dans mongodb
- 12. Application de SQL Server pour supprimer une base de données
- 13. Source de données MongoDB et C#
- 14. Android: Supprimer la base de données entière
- 15. Supprimer une ligne d'une base de données MySQL
- 16. Comment faire pour supprimer des collections temporaires MapReduce dans mongoDB
- 17. Obtenir des bases de données MongoDB dans un tableau JavaScript?
- 18. Comment supprimer tous les index de base de données d'une base de données SQL Server
- 19. Créer une base de données dans QT
- 20. Supprimer l'enregistrement dans la base de données avec bindingnavigator
- 21. Comment supprimer dans datagrid ainsi base de données
- 22. Doublet sélectionner/supprimer dans la base de données MySQL
- 23. supprimer toutes les données de la base de données sphinx
- 24. Comment faire pour supprimer les espaces de fin dans une colonne de base de données?
- 25. Comment supprimer la base de données dans l'application Android
- 26. NHibernate - Supprimer ne pas persister dans la base de données
- 27. Une liste d'indices dans MongoDB?
- 28. Comment verrouiller une base de données MySQL pour écrire/lire/mettre à jour/supprimer ... tout est verrouillé?
- 29. supprimer tout itérer
- 30. tableau dans une collection MongoDB
Remarque : Ceci ne supprimera pas la base de données, seulement tout son contenu. – connorbode
@connorbode Merci pour ça. Je l'ai lu et immédiatement: ** "B-Mais OP ne veut pas supprimer la base de données!" **. Commande très trompeuse !! –
À utiliser avec précaution: si vous êtes dans un environnement fragmenté avec wiredTiger et que vous n'avez pas de base de données utilisateur et que vous invoquez dropDatabase, la base de données sera supprimée et pourra réapparaître comme primaire sur un fragment différent lorsque de nouveaux enregistrements sont ajoutés. –