Удалите часть данных в MongoDB



У меня есть коллекция mongoDB, которая имеет количество имен 372985, я хочу удалить записи после 200000 так, чтобы общее количество записей после удаления уменьшилось с 372985 до 200000



Как я могу сделать это с помощью запроса mongoDB?



Usecase



Мой код python не может обрабатывать огромные данные в соответствии с конфигурацией моей машины, поэтому я хочу уменьшить размер коллекции mongo, чтобы она могла работать в ограниченной оперативной памяти.



Если это не может быть сделано запросом mongo, может ли кто-то дайте подсказку для попытки python сделать то же самое.

711   1  

1 ответ:

Вам нужно сделать это шагами, потому что MongoDB требует запроса на соответствие удаляемым документам; MongoDB не может использовать skip или limit при удалении документов.

  1. Найдите (идентификаторы) документов, которые вы хотите удалить, используя skip для перехода к документам после 200000
  2. удалите документы, принадлежащие списку, содержащемуся в пункте 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

    Ничего не найдено.