Ошибка MotorCollection.count_documents при переходе с Motor 1.3 на 2.0 с использованием MongoDB 3.6 - PullRequest
0 голосов
/ 04 апреля 2019

В настоящее время у меня есть кодовая база с использованием Motor 1.3 против MongoDB 3.6.6, цель состоит в том, чтобы в конечном итоге перейти на Motor 2.0 и MongoDB 4.0.

В соответствии с матрицей версий: https://motor.readthedocs.io/en/stable/requirements.html#motor-and-mongodbПо-видимому, необходимо сначала обновить кодовую базу для использования Motor 2.0, прежде чем обновлять MongoDB до 4.0

. Проблема, с которой я сталкиваюсь при таком подходе, заключается в том, что существующие применения count () необходимо перенести виспользуйте count_documents (), но похоже, что этой функции нет в MongoDB 3.6 и что она была представлена ​​в MongoDB 4.0.3.

Я немного растерялся из-за того, как обновить приложение.

[Edit] Просто покопавшись еще немного, я обновился до Motor 2.0, чтобы посмотреть, работает ли count_documents () и работает ли он.Под прикрытием он вызывает pymongo 3.7.2 count_documents, который фактически реализован как агрегация.Я не уверен, почему Motor 1.3 не делает этого.

Motor 2.0 core.py

class AgnosticCollection(AgnosticBaseProperties):
    __motor_class_name__ = 'MotorCollection'
    __delegate_class__ = Collection

    bulk_write               = AsyncCommand(doc=bulk_write_doc)
    count_documents          = AsyncRead()
    create_index             = AsyncCommand()

Motor 1.3 core.py

class AgnosticCollection(AgnosticBaseProperties):
    __motor_class_name__ = 'MotorCollection'
    __delegate_class__ = Collection

    bulk_write           = AsyncCommand(doc=bulk_write_doc)
    count                = AsyncRead()
    create_index         = AsyncCommand()

Я вставилэто в коде Мотора 1.3 выше, и это, кажется, исправить мою проблему

count_documents          = AsyncRead()
...