Delete everything in a MongoDB database
我在MongoDB上进行开发。 对于完全非邪恶的目的,我有时想要吹掉数据库中的所有东西 - 也就是说,删除每一个集合,以及其他任何可能存在的东西,并从头开始。 是否有一行代码可以让我这样做? 同时给出MongoDB控制台方法和MongoDB Ruby驱动程序方法的加分点。
在mongo shell中:
1 2 | use [database]; db.dropDatabase(); |
Ruby代码非常相似。
另外,从命令行:
1 | mongo DATABASE_NAME --eval"db.dropDatabase();" |
当我需要重置所有集合但不想让任何数据库用户失去时,我遇到了同样的问题。如果要保存数据库的用户配置,请使用以下代码行:
1 2 | use <whichever database> db.getCollectionNames().forEach(function(c) { if (c.indexOf("system.") == -1) db[c].drop(); }) |
此代码将遍历一个数据库中的所有集合名称,并删除那些不以"system"开头的集合。
我遵循
1 2 3 4 5 | db.getCollectionNames().forEach( function(collection_name) { db[collection_name].remove() } ); |
在我的情况下,我使用以下命令从命令行运行:
1 | mongo [database] --eval"db.getCollectionNames().forEach(function(n){db[n].remove()});" |
通过编译@Robse和@DanH(kudos!)的答案,我得到了以下完全满足我的解决方案:
1 2 3 4 5 6 | db.getCollectionNames().forEach( function(collection_name) { if (collection_name.indexOf("system.") == -1) db[collection_name].drop(); else db.collection_name.remove({}); }); |
连接到您的数据库,运行代码。
它通过删除用户集合并清空系统集合来清理数据库。
听到一些使用mongo shell的mongodb的完全删除操作
要删除集合中的特定文档:
要删除集合中的所有文档:
要删除集合:
删除数据库:
首先通过
1 | db.dropDatabase() |
使用
1 2 3 4 5 6 7 | [databaseName] db.Drop+databaseName(); drop collection use databaseName db.collectionName.drop(); |
如果要仅删除数据库及其子集合,请使用以下命令:
-
use ; -
db.dropDatabase();
如果你想删除mongo中的所有数据库,那么使用:
1 2 3 4 5 6 7 8 | db.adminCommand("listDatabases").databases.forEach(function(d) { if(d.name!="admin" && d.name!="local" && d.name!="config") { db.getSiblingDB(d.name).dropDatabase(); } } ); |
如果您需要一次性删除所有内容:(一次删除所有数据库)
1 | mongo --quiet --eval 'db.getMongo().getDBNames().forEach(function(i){db.getSiblingDB(i).dropDatabase()})' |
对于流星开发者。
在
在项目的文件夹中运行
然后输入
您将自动在本地服务器中看到更改。
对于其他人。
1 | db.getCollectionNames().forEach(c=>db[c].drop()) |
显示dbs
使用
db.dropDatabase()
//几乎没有其他命令
显示集合
db.collection.drop()
希望有所帮助
我更喜欢
1 | db.your_collection.remove({}) |
过度
1 | db.your_collection.drop() |
如果您的收藏品是特殊收藏品
即一个上限的集合或一个标记为唯一的字段的集合,drop将清除集合本身,当再次创建集合时,它将是一个普通的集合。您必须再次定义属性。
因此,使用
删除数据库的最简单方法是说博客:
1 2 3 4 | > use blog switched to db blog > db.dropDatabase(); {"dropped" :"blog","ok" : 1 } |
要删除所有数据库,请使用:
1 2 3 4 5 | for i in $(mongo --quiet --host $HOSTNAME --eval"db.getMongo().getDBNames()" | tr","""); do mongo $i --host $HOSTNAME --eval"db.dropDatabase()"; done |
1 2 3 4 | use <dbname> db.dropAllUsers() db.dropAllRoles() db.dropDatabase() |
MongoDB db.dropDatabase()文档解释了2.6中引入的修改:
Changed in version 2.6: This command does not delete the users associated with the current database.
在MongoDB 3.2及更新版本中,
1 2 3 4 5 6 7 8 | > Mongo().getDBNames() ["local","test","test2","test3" ] > show dbs local 0.000GB test 0.000GB test2 0.000GB test3 0.000GB |
然后,数组上的
1 2 3 4 5 6 7 | 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(); } }) |
示例运行:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | > 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 |