我可以使用Node JS Driver Db class Method dropDatabase来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中的所有数据库,只需连接到根目录如下:
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个数据库)?
他们的方式类似于连接到根(不指定任何数据库名称)并使用特定的数据库名称删除数据库吗?
您可以使用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();
});
});
};