DocumentTooLarge во время запроса - PullRequest
0 голосов
/ 16 октября 2019

Я хочу получить большое количество (1 миллион) документов по их идентификатору объекта, хранящемуся в списке obj_ids. Поэтому я использую

docs = collection.find({'_id' : {'$in' : obj_ids}})

Однако при попытке доступа к документам (например, list(docs)) я получаю

pymongo.errors.DocumentTooLarge: BSON document too large (19889042 bytes) - the connected server supports BSON document sizes up to 16777216 bytes.

, что меня смущает. Насколько я понимаю, размер документа составляет 16 МБ для одного документа. Но я не думаю, что у меня есть какой-либо документ, превышающий это ограничение:

  1. Я не получил это сообщение об ошибке при вставке любого из документов в первую очередь.
  2. Эта ошибкане отображается, если я разбил ObjectIds на 2 подмножества, а потом рекомбинировал результаты.

Так что, если в моей коллекции нет слишком большого документа, о чем идет сообщение об ошибке?

1 Ответ

1 голос
/ 16 октября 2019

Ваш запрос {'_id' : {'$in' : obj_ids}} - это проблема, которая слишком велика, а не сами документы.

Вам необходимо реорганизовать свой подход;Может быть, сделать это в пакетном режиме и присоединиться к результатам.

...