删除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开发者。

  1. localhost:3000运行应用程序时打开第二个terminal窗口。

  2. 在你的项目的文件夹运行, meteor mongo

    coolName = new Mongo.Collection('yourCollectionName');

  3. 然后只需inputdb.yourCollectionName.drop();

  4. 您将自动在本地服务器上看到更改。

对于其他人。

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中更改:此命令不会删除与当前数据库关联的用户。

  1. 列出所有可用的dbs显示dbs
  2. select必要的数据库使用
  3. 删除数据库db.dropDatabase()//几乎没有附加的命令
  4. 列出一个db show集合中可用的所有集合
  5. 删除一个规范集合db.collection.drop()

希望有所帮助