Я'м делаешь разработки в MongoDB. Совершенно не зло, я иногда хочу, чтобы сдуть все в базе данных—то есть, чтобы удалить каждую коллекцию, и все остальное, может быть завалялось, и начать с нуля. Есть один код, который позволит мне сделать это? Бонусные баллы за предоставленную оба метода консоль MongoDB и MongoDB в способ драйвера Руби.
Кроме того, из командной строки:
mongo DATABASE_NAME --eval "db.dropDatabase();"
У меня была такая же проблема, когда мне нужно было сбросить все коллекции, но это'т хотите потерять всех пользователей базы данных. Используйте следующий код, если вы хотите сохранить конфигурацию пользователя для базы данных:
use <whichever database>
db.getCollectionNames().forEach(function(c) { if (c.indexOf("system.") == -1) db[c].drop(); })
Этот код будет пройти через все названия из одной базы данных и отбрасывание тех, которые не начинаются с "Системы.&и".
Я последовал за `дБ.dropDatabase () маршрута в течение длительного времени, однако, если вы'вновь пытается использовать это для очистки базы данных от тестовых случаев вы в конечном итоге может найти проблемы с индексом ограничений не выполняется после падения базы данных. В результате, вы'll не нужно возиться с ensureIndexes, или проще будет избежать dropDatabase всего и просто извлекать из каждой коллекции в цикле, такие как:
db.getCollectionNames().forEach(
function(collection_name) {
db[collection_name].remove()
}
);
В моем случае я бежал из командной строки с помощью:
mongo [database] --eval "db.getCollectionNames().forEach(function(n){db[n].remove()});"
Путем составления ответов от @Robse и @зань (респект!), Я've получили следующее решение, которое полностью удовлетворяет меня:
db.getCollectionNames().forEach( function(collection_name) {
if (collection_name.indexOf("system.") == -1)
db[collection_name].drop();
else
db.collection_name.remove({});
});
Подключения к базе, выполните код.
Она очищает базу данных, удалив коллекций пользователей и опорожнение сборников системе.
Слышал некоторые используют полное удаление операций для MongoDB через монго оболочки
Чтобы удалить конкретный документ в коллекции: дБ.моя_коллекция.удалить( {название: фильм"стек" и} )
Для удаления всех документов в коллекции: дБ.моя_коллекция.удалить()
Чтобы удалить коллекция : дБ.моя_коллекция.падение()
для удаления базы данных :
сначала идите к этой базе данных через команду использовать базы данных mydb
, а затем
db.dropDatabase()
Использовать
[databaseName]
db.Drop+databaseName();
drop collection
use databaseName
db.collectionName.drop();
если вы хотите удалить только базу и ее подколлекции использовать это :
дБ.dropDatabase();
если вы хотите удалить все базы данных в монго тогда используйте это :
db.adminCommand("listDatabases").databases.forEach(function(d)
{
if(d.name!="admin" && d.name!="local" && d.name!="config")
{
db.getSiblingDB(d.name).dropDatabase();
}
}
);
db.getCollectionNames().forEach(c=>db[c].drop())
Я предпочитаю
db.your_collection.remove({})
за
db.your_collection.drop()
Если ваша коллекция была специальная коллекция
я.е руковдство коллекция или сбор с одного поля помечены как уникальные, процесс возврата будет ясно в коллекции коллекции и когда снова это будет обычное собрание. Вам придется снова определить свойства.
Так что используйте удалить()
очистить документах, не сняв коллекции и влиять на поведение коллекции.
Надеюсь, что помогает
Для разработчиков Метеор.
Откройте второе окно терминала во время работы приложения в имя localhost:3000`.
В проекте'папку с запуска, Метеор монго
.
coolName = новый Монго.Коллекция('yourCollectionName');
Затем просто введите дБ.yourCollectionName.падение();`
Вы'Лл автоматически увидеть изменения в вашем локальном сервере.
Для всех остальных.
дБ.yourCollectionName.падение();
Простой способ удалить базу данных сказать блог:
> use blog
switched to db blog
> db.dropDatabase();
{ "dropped" : "blog", "ok" : 1 }
use <dbname>
db.dropAllUsers()
db.dropAllRoles()
db.dropDatabase()
БД в MongoDB.dropDatabase() документации, объясняя изменение, внесенное в 2.6:
изменено в версии 2.6: эта команда не удаляет пользователей, связанных с текущей базой данных.
В MongoDB 3.2 и новее, Монго().getDBNames()
в монго
консоли будет выведен список имен баз данных на сервере:
> Mongo().getDBNames()
[ "local", "test", "test2", "test3" ]
> show dbs
local 0.000GB
test 0.000GB
test2 0.000GB
test3 0.000GB
А цикл foreach()цикл по массиву, то могли бы назвать
dropDatabase()` отказаться от всех перечисленных баз данных. По желанию вы можете пропустить некоторые важные базы данных, что вы Дон'т хотите отказаться. Например:
Mongo().getDBNames().forEach(function(x) {
// Loop through all database names
if (['admin', 'config', 'local'].indexOf(x) < 0) {
// Drop if database is not admin, config, or local
Mongo().getDB(x).dropDatabase();
}
})
Пример выполнения:
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.000GB
test2 0.000GB
test3 0.000GB
> Mongo().getDBNames().forEach(function(x) {
... if (['admin', 'config', 'local'].indexOf(x) < 0) {
... Mongo().getDB(x).dropDatabase();
... }
... })
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
Чтобы удалить все БД использовать:
for i in $(mongo --quiet --host $HOSTNAME --eval "db.getMongo().getDBNames()" | tr "," " ");
do mongo $i --host $HOSTNAME --eval "db.dropDatabase()";
done