1
A
回答
1
通常你会做
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存储引擎。
相关问题
- 1. 正则表达式从UTF8字符串中删除非字母数字字符
- 2. 从SQL Server 2005数据库中删除非法字符?
- 3. 删除4个字节的UTF8字符
- 4. 从文件内容中删除非UTF8字符
- 5. 由于非法字符而无法删除数据库
- 6. 将utf8数据库中的ansi blob数据转换为utf8字符集
- 7. json_encode(mysql数据库|表字符集UTF8)
- 8. 如何删除mongodb数据库?
- 9. MongoDB删除每个数据库
- 10. 删除字符串jquery中的所有非数字字符?
- 11. 从C中的UTF8字符串中删除变音符号
- 12. Notepad ++删除非英文数字字符
- 13. REST Yii2 - 如何在json中显示来自数据库的非UTF8字符?
- 14. 如何从UTF8字符串中删除控制字符
- 15. 从字符串中删除不可打印的utf8字符(控制字除外)
- 16. 删除数据文件中的非ASCII字符
- 17. UTF8 mysql数据库中长于255个字符的关键字
- 18. 从字符串中删除非字母数字字符
- 19. 取代非utf8字符
- 20. 写非UTF8字符在Perl
- 21. 替换非UTF8字符
- 22. 删除数据库字段中的特殊字符
- 23. 数据库表删除后非常慢
- 24. 删除访问字段中的非字母数字字符
- 25. 删除文件中的非ASCII字符
- 26. 删除/删除Teradata中的数据库
- 27. 从字符串中删除所有非字母,非数字字符?
- 28. logstash - 删除字段中的所有非数字字符
- 29. 如何删除列中的非字母数字字符?
- 30. MongoDb删除2个数据
用代码,试着解释一下。 –
我认为代码非常简单。但好的,我添加一些解释。 – yaoxing
早上好 我已经试过这种方式,但没有奏效。尽管dropDatabase()命令显示数据库已被删除,但当我运行show dbs时,它仍然存在。 > emptyDbs [0] .NAME > emptyDbs [1] .NAME >变种DB2 = db.getSisterDB(emptyDbs [0]。名称); > var db3 = db.getSisterDB(emptyDbs [1] .name); > db2.dropDatabase() {“dropped”:“ ”,“ok”:1} > db3.dropDatabase() {“dropped”:“ ”,“ok”:1} > show dbs <其他数据库> (空) (空) –