删除mongodb中具有非utf-8字符的数据库
下午好 如何删除具有非utf-8字符的数据库 请参见“附加显示”中的“显示数据库”命令 谢谢你的关注 问候 Alexandre Bunn通常你会这么做删除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
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后,数据库被删除。谢谢你的帮助。