Я пытаюсь получить большое количество документов из представления mongodb через библиотеку python mongodb pymongo.
Поскольку у меня возникают проблемы с производительностью, я хотел быиспользуйте EXHAUST CursorType для запроса find()
.
Это прекрасно работает, если я пытаюсь использовать его на собрании mongodb, как здесь:
cursor = db.my_collection.find(
{}, cursor_type=CursorType.EXHAUST, batch_size=500)
Однако, если я пытаюсь сделать то же самое для представления вместо коллекции, то яполучить ошибку:
cursor = db.my_view.find(
{}, cursor_type=CursorType.EXHAUST, batch_size=500)
pymongo.errors.OperationFailure: database error: Namespace my_db.my_view is a view. Legacy find operations are not supported on views. Only clients which support the find command can be used to query views.
Работает нормально, если я не указываю тип курсора EXHAUST, но это приводит к серьезному снижению производительности.
Также стоит отметить, что я могу использовать aggregate()
вместо find()
, что немного быстрее, но не так хорошо, как find(cursor_type=EXHAUST)
.
Кто-нибудь видел эту ошибку раньше иудалось решить?
Мои характеристики:
- python2.7
- pymongo 3.7.1
- mongodb 3.6.3