删除mongodb中具有非utf-8字符的数据库

删除mongodb中具有非utf-8字符的数据库,mongodb,Mongodb,下午好 如何删除具有非utf-8字符的数据库 请参见“附加显示”中的“显示数据库”命令 谢谢你的关注 问候 Alexandre Bunn通常你会这么做 use [db]; db.dropDatabase(); use命令实际做的是将数据库对象放入db。使用UTF-8数据库名称,您可能会发现无法运行use命令。作为获取db对象的另一种方法,您可以运行db.getSisterDB([db name])然后将其删除。 因此,这应该可以做到: var db2 = db.getSisterDB(empt

下午好

如何删除具有非utf-8字符的数据库

请参见“附加显示”中的“显示数据库”命令

谢谢你的关注

问候

Alexandre Bunn

通常你会这么做

use [db];
db.dropDatabase();
use
命令实际做的是将数据库对象放入
db
。使用UTF-8数据库名称,您可能会发现无法运行
use
命令。作为获取
db
对象的另一种方法,您可以运行
db.getSisterDB([db name])
然后将其删除。
因此,这应该可以做到:

var db2 = db.getSisterDB(emptyDbs[0].name);
db2.dropDatabase();
还有另一个方法
getSiblingDB
,它返回相同的
db
对象。如果你想知道它们之间有什么区别,那么,没有区别

replset:PRIMARY> db.getSiblingDB
function (name) {
    return this.getMongo().getDB(name);
}
replset:PRIMARY> db.getSisterDB
function (name) {
    return this.getMongo().getDB(name);
}
编辑: 因为上面的解决方案不适合你。我认为您可以尝试的最后一件事是转到
dbpath
,找到以UTF-8字符命名的文件并删除它们。您可能不会以该名称提交任何文件。因为当您看到(空)跟在db名称后面时,通常意味着db被删除。如果是这样,只需重新启动实例即可解决问题。
执行此操作之前,请记住停止数据库。在做任何事情之前做备份


这种方法仅适用于MMAPv1存储引擎。

我认为代码非常简单。但是好的,我补充了一些解释。早上好,我试过用这种方法,但是没有用。虽然dropDatabase()命令显示数据库已被删除,但当我运行showdbs时,它仍然在那里。>emptyDbs[0]。名称� > emptyDbs[1]。名称� > var db2=db.getSisterDB(emptyDbs[0].name);>var db3=db.getSisterDB(emptyDbs[1].name);>db2.dropDatabase(){“已删除”:�", "确定“:1}>db3.dropDatabase(){”已删除“:”�", "确定“:1}>显示数据库� (空)� (空)@AlexandreBunn为下一步尝试添加一些注释。重新启动mongodb后,数据库被删除。谢谢你的帮助。