我在MongoDB上做开发。出于完全无害的目的,我有时想要删除数据库中的所有内容——也就是说,删除每一个集合,以及周围可能存在的任何其他内容,然后从头开始。是否有一行代码可以让我这样做?同时提供MongoDB控制台方法和MongoDB Ruby驱动程序方法的额外好处。


当前回答

在MongoDB 3.2及更新版本中,Mongo shell中的Mongo().getDBNames()将在服务器中输出一个数据库名称列表:

> Mongo().getDBNames()
[ "local", "test", "test2", "test3" ]

> show dbs
local  0.000GB
test   0.000GB
test2  0.000GB
test3  0.000GB

遍历数组的forEach()循环然后可以调用dropDatabase()来删除所有列出的数据库。您还可以选择跳过不想删除的一些重要数据库。例如:

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();
  }
})

示例运行:

> 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

其他回答

通过编译@Robse和@DanH的答案,我得到了以下完全让我满意的解决方案:

db.getCollectionNames().forEach( function(collection_name) { 
  if (collection_name.indexOf("system.") == -1) 
       db[collection_name].drop();
  else  
       db[collection_name].remove({});
});

它通过删除用户集合和清空系统集合来清理数据库。

在MongoDB 3.2及更新版本中,Mongo shell中的Mongo().getDBNames()将在服务器中输出一个数据库名称列表:

> Mongo().getDBNames()
[ "local", "test", "test2", "test3" ]

> show dbs
local  0.000GB
test   0.000GB
test2  0.000GB
test3  0.000GB

遍历数组的forEach()循环然后可以调用dropDatabase()来删除所有列出的数据库。您还可以选择跳过不想删除的一些重要数据库。例如:

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();
  }
})

示例运行:

> 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

在蒙戈壳里:

use [database];
db.dropDatabase();

并删除用户:

db.dropAllUsers();

对于Meteor开发者。

在localhost:3000中运行应用程序时打开第二个终端窗口。 在项目的文件夹中运行,meteor mongo。 coolName = new Mongo.Collection('yourCollectionName'); 然后输入db.yourCollectionName.drop(); 您将自动在本地服务器中看到更改。

为了其他人。

db.yourCollectionName.drop ();

同样,在命令行中:

mongo DATABASE_NAME --eval "db.dropDatabase();"