Удалите все документы в коллекциях MongoDB в оболочке Mon go - PullRequest
1 голос
/ 17 июня 2020

Я хочу удалить все документы во всех коллекциях MongoDB. Есть ли способ удалить все документы во всех коллекциях.

Я использовал db.collection.remove({}), но он удаляет только все документы из одной коллекции. Есть ли какая-нибудь команда? Я в основном использую NodeJS, может есть шанс использовать NodeJS для удаления всех документов во всех коллекциях?

Простите, если вопрос тупой, только начал работать в MongoDB.

1 Ответ

1 голос
/ 17 июня 2020

Как уже было предложено - вы можете использовать .dropDatabase () , чтобы удалить всю базу данных , или .collection.drop () , чтобы удалить collection или, если это просто удалить все документы во всех коллекциях, вам нужно выполнить итерацию по списку коллекций и реализовать либо .collection.remove () , либо .collection.deleteMany () или .findAndModify () без какого-либо фильтра в условии запроса.

Чтобы удалить документы в каждой коллекции по отдельности:

сначала перечислить всю коллекцию имена, используя .getCollectionNames () , а затем удалите документы.

let colls = db.getCollectionNames() // Mongo shell can accept .Js Func's, if you've more collections you can use parallel as well
colls.forEach(eachColl => db[eachColl].remove({})) // or .deleteMany() or . findAndModify()

Таким образом вы все равно будете иметь базу данных и пустые коллекции, существующие на сервере MongoDB. Возможно, вы сможете вернуться через некоторое время, чтобы проверить список доступных коллекций или, возможно, переименовать несколько et c.

Но если вы просто не хотите смотреть на имена коллекций, которые будут существовать в ближайшем будущем, go впереди с drop командами предпочтительнее удалить базу данных, так как вы хотели удалить все документы из всех коллекций - почему это предпочтительнее? потому что, в отличие от SQL баз данных, MongoDB автоматически создает базу данных и коллекцию, если вы впервые записываете документ в коллекцию в БД. Таким образом, в MongoDB вам может не понадобиться поддерживать базы данных с пустыми коллекциями.

Предположим, вы запрашиваете коллекцию с именем girlfriend, которая находится в базе данных mylife - Допустим, она уже удалена / отсутствует / никогда не существовала, тогда .find() вернет [] пустой массив, такой же, как запрос пустая коллекция в БД - это преимущество MongoDB, поскольку она не вызывает ошибку при несовпадении имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...