Невозможно использовать pymongo EXHAUST Тип курсора с функцией find () в представлении (устаревшая операция поиска) - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь получить большое количество документов из представления 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
...