删除MongoDB数据库中的所有内容
我在MongoDB上进行开发。 对于完全没有恶意的目的,我有时候想要把数据库中的所有东西都删掉 – 也就是删除每一个集合,以及其他可能存在的东西,从头开始。 是否有一行代码可以让我这样做? 同时提供MongoDB控制台方法和MongoDB Ruby驱动程序方法的奖励点。
在mongo shell中:
use [database]; db.dropDatabase();
Ruby代码非常相似 。
另外,从命令行:
mongo DATABASE_NAME --eval "db.dropDatabase();"
我有同样的问题,当我需要重置所有的集合,但不想松散任何数据库用户。 如果要保存数据库的用户configuration,请使用以下代码行:
use <whichever database> db.getCollectionNames().forEach(function(c) { if (c.indexOf("system.") == -1) db[c].drop(); })
此代码将从一个数据库中读取所有集合名称,并删除那些不以“system”开头的集合。
我跟踪了db.dropDatabase()
路线很长一段时间,但是如果你想用它来擦除testing用例之间的数据库,你最终可能会发现在数据库删除之后索引约束问题不能被遵守。 因此,您可能需要与ensureIndexes混淆,或者一个更简单的path将避免dropDatabase,并从一个循环中删除每个集合,例如:
db.getCollectionNames().forEach( function(collection_name) { db[collection_name].remove() } );
在我的情况下,我从命令行运行这个使用:
mongo [database] --eval "db.getCollectionNames().forEach(function(n){db[n].remove()});"
通过编译@Robse和@DanH(kudos!)的答案,我得到了以下完全满足我的解决scheme:
db.getCollectionNames().forEach( function(collection_name) { if (collection_name.indexOf("system.") == -1) db[collection_name].drop(); else db.collection_name.remove({}); });
连接到你的数据库,运行代码。
它通过删除用户集合和清空系统集合来清理数据库。
使用
[databaseName] db.Drop+databaseName(); drop collection use databaseName db.collectionName.drop();
听说有些人使用mongo shell来使用mongodb的完全删除操作
删除集合中的特定文档: db.mycollection.remove( {name:"stack"} )
删除集合中的所有文档: db.mycollection.remove()
删除集合: db.mycollection.drop()
删除数据库:首先use mydb
命令进入该数据库,然后
db.dropDatabase()
如果你只想删除一个数据库及其子集合,使用这个:
-
use <database name>;
-
db.dropDatabase();
如果你想删除mongo中的所有数据库,那么使用这个:
db.adminCommand("listDatabases").databases.forEach(function(d) { if(d.name!="admin" && d.name!="local" && d.name!="config") { db.getSiblingDB(d.name).dropDatabase(); } } );
最简单的方法来删除数据库说博客:
> use blog switched to db blog > db.dropDatabase(); { "dropped" : "blog", "ok" : 1 }
对于meteor开发者。
-
在
localhost:3000
运行应用程序时打开第二个terminal窗口。 -
在你的项目的文件夹运行,
meteor mongo
。coolName = new Mongo.Collection('yourCollectionName');
-
然后只需input
db.yourCollectionName.drop();
-
您将自动在本地服务器上看到更改。
对于其他人。
db.yourCollectionName.drop();
删除所有数据库使用:
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()
解释2.6中引入的修改的MongoDB db.dropDatabase()文档 :
在版本2.6中更改:此命令不会删除与当前数据库关联的用户。
- 列出所有可用的dbs显示dbs
- select必要的数据库使用
- 删除数据库db.dropDatabase()//几乎没有附加的命令
- 列出一个db show集合中可用的所有集合
- 删除一个规范集合db.collection.drop()
希望有所帮助