В настоящее время у меня есть кодовая база с использованием 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()