Удалите часть данных в MongoDB
У меня есть коллекция mongoDB, которая имеет количество имен 372985, я хочу удалить записи после 200000 так, чтобы общее количество записей после удаления уменьшилось с 372985 до 200000
Как я могу сделать это с помощью запроса mongoDB?
Usecase
Мой код python не может обрабатывать огромные данные в соответствии с конфигурацией моей машины, поэтому я хочу уменьшить размер коллекции mongo, чтобы она могла работать в ограниченной оперативной памяти.
Если это не может быть сделано запросом mongo, может ли кто-то дайте подсказку для попытки python сделать то же самое.
1 ответ:
Вам нужно сделать это шагами, потому что MongoDB требует запроса на соответствие удаляемым документам; MongoDB не может использовать
skipилиlimitпри удалении документов.
- Найдите (идентификаторы) документов, которые вы хотите удалить, используя skip для перехода к документам после 200000
- удалите документы, принадлежащие списку, содержащемуся в пункте 1
Вы можете попробовать в Mongo shell:
var to_delete = db.collection.find({}, {_id : 1}) .skip(200000) .toArray() .map(function(doc) { return doc._id; }); db.collection.remove({_id: {$in: to_delete}})
Comments