Я занимаюсь разработкой на MongoDB. Для совершенно не злых целей я иногда хочу сдуть все в базе данных, т. Е. Удалить каждую отдельную коллекцию и все остальное, что может быть вокруг, и начать с нуля. Есть ли одна строка кода, которая позволит мне это сделать? Бонусные баллы за предоставление как метода консоли MongoDB, так и метода драйвера MongoDB Ruby.Удалить все в базе данных MongoDB
ответ
Кроме того, из командной строки:
mongo DATABASE_NAME --eval "db.dropDatabase();"
Я не верю, что это работает в 2.4.6. Мои записи все еще существуют. –
Использование
[databaseName]
db.Drop+databaseName();
drop collection
use databaseName
db.collectionName.drop();
Hear некоторые используют полные операции удаления для MongoDB с использованием Монго оболочки
Чтобы удалить конкретный документ в коллекциях: db.mycollection.remove({name:"stack"})
Чтобы удалить все документы в коллектор ctions: db.mycollection.remove()
Для удаления коллекции: db.mycollection.drop()
для удаления базы данных: первым идти в эту базу данных use mydb
командой, а затем
db.dropDatabase()
У меня была такая же проблема, когда мне нужно сбросить все коллекции, но не захотели потерять пользователей базы данных. Используйте следующую строку кода, если вы хотите сохранить конфигурацию пользователя для базы данных:
use <whichever database>
db.getCollectionNames().forEach(function(c) { if (c.indexOf("system.") == -1) db[c].drop(); })
Этот код будет проходить через все имена коллекции из одной базы данных и падение те, которые не начинаются с «системой». ,
Как упоминалось в @DanH, вы можете найти более надежным использование 'remove' вместо' drop'. Опция 'remove', как представляется, поддерживает ограничения на поля, которые вы очищаете. Когда мы использовали метод «drop», ограничение 'unique' на одном из наших полей не было выполнено после падения. – Scottymac
@Scottymac - еще лучше добавьте ветку 'else' (в' if (c.indexOf ("system.") == -1) '), которая вместо' drop' выполняет 'remove'. Таким образом, вы не останетесь с пустыми коллекциями, если вы больше не используете их. –
Лучше, чем 'db [c]', используйте 'db.getCollection (c)', который избегает [ошибок, когда имена коллекции являются цифрами] (http: //stackoverflow.com/a/24657123/70170). –
, если вы хотите удалить только базу данных и ее суб-коллекции использовать это:
use <database name>;
db.dropDatabase();
, если вы хотите удалить все базы данных в Монго затем использовать :
db.adminCommand("listDatabases").databases.forEach(function(d)
{
if(d.name!="admin" && d.name!="local" && d.name!="config")
{
db.getSiblingDB(d.name).dropDatabase();
}
}
);
Отличный ответ ... это, вероятно, то, что пользователь получал по адресу – robert
Я следовал за db.dropDatabase()
в течение длительного времени, однако, если вы пытаетесь использовать это для очистки базы данных между тестовыми примерами, вы, возможно, в конечном итоге найдете проблемы с ограничениями индекса, которые не будут соблюдаться после падения базы данных.В результате, вы будете должны возиться с ensureIndexes, или более простой маршрут будет избежать dropDatabase отбрасываются, просто удалив из каждой коллекции в цикле, такие как:
db.getCollectionNames().forEach(
function(collection_name) {
db[collection_name].remove()
}
);
В моем случае я бегу из командной строки с помощью:
mongo [database] --eval "db.getCollectionNames().forEach(function(n){db[n].remove()});"
. Спасибо за это предложение, мы использовали' db [collection_name] .drop() 'и он показывал те же проблемы вы описали метод 'db.dropDatabase()'. Переключение 's/drop/remove /' работало блестяще! – Scottymac
Я обнаружил, что 'remove()' не работает на MongoDB для Windows, и вместо этого мне нужно было выполнить 'remove ({})', который работает как на OSX, так и на Windows. – DanH
Спасибо за отзыв, мы находимся на платформе Linux, но это стоит посмотреть немного дальше. – Scottymac
путем составления ответов от @Robse и @DanH (! престижность), я получил следующее решение, которое полностью удовлетворяет меня:
db.getCollectionNames().forEach(function(collection_name) {
if (collection_name.indexOf("system.") == -1)
db[collection_name].drop();
else
db.collection_name.remove({});
});
Подключитесь к базе данных, запустите код.
Он очищает базу данных, отбрасывая пользовательские коллекции и опуская коллекцию системы.
Это работает очень хорошо. Именно то, что мне нужно. –
Простейший способ удалить базу данных говорят блог:
> use blog
switched to db blog
> db.dropDatabase();
{ "dropped" : "blog", "ok" : 1 }
Для разработчиков Метеор.
Открыть второе окно терминала во время работы вашего приложения в
localhost:3000
.В папке вашего проекта,
meteor mongo
.coolName = new Mongo.Collection('yourCollectionName');
Затем просто введите
db.yourCollectionName.drop();
Вы автоматически видеть изменения в локальном сервере.
Для всех остальных.
db.yourCollectionName.drop();
Чтобы удалить все блоки данных используют:
for i in $(mongo --quiet --host $HOSTNAME --eval "db.getMongo().getDBNames()" | tr "," " ");
do mongo $i --host $HOSTNAME --eval "db.dropDatabase()";
done
use <dbname>
db.dropAllUsers()
db.dropAllRoles()
db.dropDatabase()
MongoDB db.dropDatabase() documentation объяснения изменения, введенные в 2.6:
Изменено в версии 2.6: Эта команда не удаляет пользователей, связанных с текущей базой данных.
- Перечислите все доступные д.б.н. показать д.б.н.
- Выберите необходимый дб использования
- Отбросьте базу данных дб.dropDatabase() // Несколько дополнительных команд
- Список всех коллекций, доступных в БД шоу коллекций
- Удалить коллекцию спецификация db.collection.drop()
Надежда, что помогает
- 1. Как я могу удалить все ObjectId в базе данных (mongodb)?
- 2. Удалить все файлы из коллекции в MongoDB
- 3. Как удалить все подключения к базе данных?
- 4. Grails/MongoDB удалить все
- 5. Неисправные изображения в базе данных mongodb
- 6. MongoDB в моей базе данных
- 7. mongodb «все» условный оператор, реализованный в базе данных mysql
- 8. Удалить все записи в Docker mongodb?
- 9. Удалить изображение в базе данных удалить symfony2
- 10. web2py: удалить все таблицы в базе данных в одном выражении?
- 11. Как удалить все записи в базе данных в CouchDB?
- 12. MongoDB Подключиться к базе данных
- 13. Как удалить все таблицы в базе данных с помощью SqlCommand?
- 14. Удалить/заменить все изображения в базе данных SQL
- 15. Удалить все записи из таблицы в базе данных sqlite
- 16. Как удалить все строки в базе данных одним щелчком мыши
- 17. Как я могу удалить все таблицы в моей базе данных?
- 18. Как удалить все таблицы в базе данных SQL Server?
- 19. Как удалить все таблицы в базе данных MySQL?
- 20. Удалить все таблицы в базе данных за один выстрел
- 21. Удалить все данные в базе данных MS Access
- 22. Удалить все, кроме последнего x числа строк в базе данных
- 23. Поиск определенной строки в базе данных MongoDB
- 24. Удалить строку в базе данных
- 25. MongoDB начальная синхронизация в большой базе данных
- 26. MongoDB: бросить все в одну базу данных?
- 27. Как удалить данные в базе данных данных?
- 28. Mongodb получить все базы данных
- 29. Поиск изменений в базе данных MongoDB
- 30. Хранить изображения в базе данных MongoDB
Примечание: Это не приведет к удалению базы данных, а только к ее содержимому. – connorbode
@connorbode Спасибо. Я прочитал его и сразу же: ** «B-But OP не хочет удалять базу данных!» **. Очень вводящая в заблуждение команда! –
Следует использовать с осторожностью: если вы находитесь в оштукатуренной среде с помощью wiredTiger, и у вас нет базы данных пользователей, и вы вызываете dropDatabase, база данных будет удалена и может появляться как первичная на другом осколке при добавлении новых записей. –