Esta es la contestación más exacta que te podemos compartir, pero obsérvala detenidamente y analiza si se puede adaptar a tu trabajo.
Solución:
No se trata de PyMongo sino de Mongo mismo.
count
es una función nativa de Mongo. Realmente no cuenta todos los documentos. Cada vez que inserta o elimina un registro en Mongo, almacena en caché el número total de registros en la colección. Entonces cuando corres count
Mongo devolverá ese valor almacenado en caché.
count_documents
utiliza un objeto de consulta, lo que significa que tiene que recorrer todos los registros para obtener el recuento total. Debido a que no está pasando ningún parámetro, tendrá que ejecutarse en los 60 millones de registros. Por eso es lento.
basado en el comentario de @Stennie
Puede usar la cuenta de documentos estimada () en PyMongo 3.7+ para devolver el conteo rápido basado en los metadatos de la colección. El recuento original () quedó obsoleto porque el comportamiento difería (recuento estimado frente a real) en función de si se proporcionaron los criterios de consulta. La nueva API del controlador es más intencional sobre el resultado