MongoDB删除每个数据库

11 浏览
0 Comments

MongoDB删除每个数据库

请问是否有一个命令可以删除我的MongoDB中的所有数据库?

我知道如果我想删除单个数据表,只需要像下面的代码一样输入数据库的名称,但我不想要指定具体的数据库名称。

mongo DB_NAME --eval 'db.dropDatabase();'

0
0 Comments

(MongoDB drop every database)这个问题的出现的原因是想要一次性删除所有数据库。解决方法是使用Mongo命令,遍历数据库列表,排除特定的数据库,并调用dropDatabase()方法删除每个数据库。

在代码中,我们可以看到使用了forEach()方法遍历数据库列表。在遍历过程中,通过if条件排除了名为"local"、"admin"、"apiomat"和"config"的数据库。然后,使用getSiblingDB()方法获取每个数据库的实例,并调用dropDatabase()方法删除数据库。

为了简化代码,可以使用indexOf()方法来检查数据库名称是否存在于一个数组中,而不是写出每个数据库的if条件。

代码如下:

db.adminCommand("listDatabases").databases.forEach(function(d) {
    var excludedDatabases = ["local", "admin", "apiomat", "config"];
    if(excludedDatabases.indexOf(d.name) === -1) {
        db.getSiblingDB(d.name).dropDatabase();
    }
});

0
0 Comments

MongoDB drop every database这个问题的出现原因是执行了一个删除所有数据库的操作,但是没有考虑到MongoDB内部的系统数据库(如admin和local)以及存储事务的config数据库。

为了解决这个问题,可以使用以下方法:

1. 创建一个JavaScript循环来执行删除操作,并在Mongo控制台中执行它:

var dbs = db.getMongo().getDBNames()
for(var i in dbs){
    db = db.getMongo().getDB( dbs[i] );
    print( "dropping db " + db.getName() );
    db.dropDatabase();
}

将其保存为dropall.js文件,然后执行以下命令:

mongo dropall.js

2. 另一种方法是复制粘贴上述代码并在Mongo控制台中输入。

然而,需要注意的是,执行这些操作可能会删除系统数据库和存储事务的config数据库。如果这些数据库被意外删除,可能需要重新启动MongoDB进程才能恢复正常。

因此,在执行删除操作之前,建议先备份重要的数据并仔细考虑是否需要删除MongoDB的所有数据库。

0
0 Comments

MongoDB drop every database的出现原因是为了清空MongoDB中的所有数据库。解决方法是使用一个命令来完成这个操作,命令如下:

mongo --quiet --eval 'db.getMongo().getDBNames().forEach(function(i){db.getSiblingDB(i).dropDatabase()})'

这个命令可以通过MongoShell或者Docker来执行。在执行命令时,需要注意的是如果有人正在与某个数据库进行交互,该数据库将被排除在清空操作之外。这个解决方法非常适合自动化任务,因为它简单易用且不需要创建和下载额外的文件。

0