2016-01-04 31 views
3

我能够使用节点JS驱动程序Db class Method dropDatabase dropDatabase。使用节点JS驱动程序删除多个Mongo数据库

但问题是,我必须放弃它像以前一样连接到数据库如下:

var MongoClient = require('mongodb').MongoClient; 
var databaseName = 'myMongoDatabaseName' 
var connStr = 'mongodb://localhost:27017/' + databaseName; 

MongoClient.connect(connStr, function(err, db) { 
    // Let's drop the database 
    db.dropDatabase(function(err, result) { 
     console.dir('we dropped the database '); 
    }); 
    db.close(); 
}); 

我能列出MongoDB的所有数据库,只需连接到根如下:

var MongoClient = require('mongodb').MongoClient; 
MongoClient.connect('mongodb://localhost:27017/', function(err, db) { 
    db.admin().listDatabases().then(function(dbs) { 
     // Grab the databases 
     dbs = dbs.databases; 
     for(var i = 0; i < dbs.length; i++) { 
      console.dir(dbs[i].name); 
     } 
     db.close(); 
    }); 
});   

我的问题是,如果我有10个数据库,那么每次我必须连接到数据库并放弃它(重复10个数据库)?

他们是否像任何方式连接到根(不指定任何数据库名称)并使用特定的数据库名称删除数据库?

+0

,它说dropDatabase用来删除当前连接的数据库,并没有其他cmd以删除数据库。然后,您可能需要循环10个数据库,连接到每个数据库并放下它 – somallg

+0

不要在无法在浏览器中运行的代码中使用代码片段。 – royhowie

+0

@royhowie,我很抱歉,我接受节点JS代码不能在浏览器上运行。我会尝试在其他地方发布节点代码。但是,您可以请告诉我,如何在Valijon编辑我的帖子时添加代码片段。 – user3278897

回答

1

您可以使用Db()构造函数来创建使用该名称的数据库实例,连接到它,并调用该实例的dropDatabase()方法,这一切都在循环中完成的。这个概念可以用 类似下面的实现来描述(警告:未经):

var mongodb = require('mongodb'), 
    MongoClient = mongodb.MongoClient, 
    server = new mongodb.Server("127.0.0.1", 27017), 
    url = 'mongodb://localhost:27017/'; 

var dropAllDatabases = function (callback) { 
    MongoClient.connect(url, function(err, db) { 
     if(err) callback(err); 
     db.admin().listDatabases().then(function(dbs) { 
      // Grab the databases 
      dbs = dbs.databases; 
      for(var i = 0; i < dbs.length; i++) { 
       console.dir(dbs[i].name); 
       new mongodb.Db(dbs[i].name, server, {}).open(function (error, client) { 
        if(error) callback(error); 
        // drop the database 
        client.dropDatabase(function(err, result) { 
         if(err) callback(err); 
         client.close(); 
        });      
       }); 
      } 
      db.close(); 
     }); 
    });  
}; 
文档中
相关问题