我可以使用Node JS Driver Db class Method dropDatabase来删除数据库。
但问题是,我必须先将数据库连接到数据库,然后按如下方式删除:
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中的所有数据库,只需连接到root,如下所示:
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个数据库)?
他们是这样的,连接到root(没有指定任何数据库名称)并使用特定的数据库名称删除数据库?
答案 0 :(得分: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();
});
});
};