Ответ Wes Widner правильный в том, что вы, скорее всего, имеете непечатаемый символ. Однако вместо того, чтобы напрямую удалять файлы из файловой системы, я предпочитаю более программный подход. Ключевыми здесь являются: никогда не ссылаться на базу данных по ее буквальному имени, а вместо этого ссылаться на имя в переменной форме:
getSiblingDB
к каждому из них). db.getSiblingDB
и выпустите db.dropDatabase
use bogus;
db.createCollection('blah');
db.getCollectionNames(); // [ "blah", "system.indexes" ]
use admin;
db.adminCommand({listDatabases:1}).databases.filter(function(d){
return d.name === 'bogus';
}).map(function(d){
return d.name;
}); // [ "bogus" ]
// use [0] here since we now 'bogus' was at index 0 in previous
// getSiblingDB will allow us to issue dropDatabase on the string
// representation of the database
db.getSiblingDB(db.adminCommand({listDatabases:1}).databases.filter(function(d){
return d.name === 'bogus';
}).map(function(d){
return d.name;
})[0]).dropDatabase();
Вместо специальной фильтрации с помощью name
мы хотим отфильтровать по sizeOnDisk
. Не забудьте выбрать «admin» здесь, поэтому сначала запустите adminCommand
с фильтром / картой, чтобы получить соответствующий индекс. Скорее всего, «admin» будет иметь индекс 0, поэтому ваша база данных, скорее всего, будет указана в индексе 1:
db.getSiblingDB(db.adminCommand({listDatabases:1}).databases.filter(function(d){
return !d.sizeOnDisk;
}).map(function(d){
return d.name;
})[1]).dropDatabase(); // note usage of [1] here
Имена базы данных не совпадают, а именно, что у него есть непечатаемый символ, в котором javascript-интерфейс оболочки mongo подавляется для вас.
В mongo его до драйвера, чтобы сделать убедитесь, что пользователь не может отправить нестандартные данные на сервер, но было продемонстрировано , что BSON обладает замечательной гибкостью в том, что он может хранить.
Поскольку вы говорите о всей базе данных самый простой способ исправить эту проблему - закрыть mongo и удалить файлы базы данных. Вы можете найти, где находятся эти файлы с командой db.serverCmdLineOpts()
.