Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Курсор в MongoDB по умолчанию возвращает до 101 документа или достаточно, чтобы довести вас до 1 МБ. Вызывает итерацию через курсор после всплытия до 4 МБ. Количество возвращаемых документов будет функцией того, насколько важны ваши документы:
Пакеты курсора
Сервер MongoDB возвращает результаты запроса пакетами. Размер партии не будет превышать максимальный размер документа BSON. Для большинства запросов первая партия возвращает 101 документ или достаточно документов, чтобы превысить 1 мегабайт. Последующий размер партии составляет 4 мегабайта. Чтобы переопределить размер пакета по умолчанию, см. Раздел batchSize () и limit ().
Для запросов, которые включают операцию сортировки без индекса, сервер должен загрузить все документы в памяти для выполнения сортировки и будет возвращать все документы в первой партии.
Когда вы перебираете курсор и доходите до конца возвращенной партии, если есть больше результатов, cursor.next () будет выполнять операцию getmore для извлечения следующая партия.
blockquote>http://docs.mongodb.org/manual/core/cursors/
Вы можете использовать batch_size ( ) в pymongo на курсоре для переопределения по умолчанию - однако он не будет превышать 16 МБ (максимальный размер документа BSON):
batch_size (batch_size)
Ограничивает количество документов, возвращенных в одной партии. Для каждой партии требуется обратная поездка на сервер.
Примечание
batch_size не может переопределить внутренние ограничения MongoDB на количество данных, которое оно вернет клиенту в одной партии ( т.е. если вы установите размер партии до 1 000 000 000, MongoDB в настоящее время будет возвращать только 4-16 МБ результатов за партию).
Повышает TypeError, если batch_size не является целым числом. Повышает значение ValueError, если batch_size меньше 0. Повышает InvalidOperation, если этот Курсор уже используется. Последний batch_size, примененный к этому курсору, имеет приоритет. Параметры:
batch_size: размер каждой партии запрошенных результатов.
blockquote>http://api.mongodb.org/python/current/api/ PyMongo / cursor.html
batch_size: The size of each batch of results requested.
Размер партии, как в КБ, МБ или количестве документов? – akki 25 November 2016 в 13:57