Python中如何解决DeprecationWarning: count is deprecated. Use Collection.count_documents instead.

如何避免这个报错呢?

def get_registered_user():
    users = collection_users.find({'regDate': regDate}).count()
    pprint.pprint("注册用户:" + str(users))

Python中如何解决DeprecationWarning: count is deprecated. Use Collection.count_documents instead.

5 回复

提示你使用 count_document,count 应该是老的方法了,换一个方法就好了


这个警告是因为你用了老版本的 count() 方法。在 PyMongo 3.7+ 里,count() 被标记为废弃,得用 count_documents() 来替代。

直接替换就行:

# 老方法(会报警告)
count = db.collection.find({"status": "active"}).count()

# 新方法
count = db.collection.count_documents({"status": "active"})

关键区别:

  • count() 是游标方法,count_documents() 是集合方法
  • count_documents() 必须带查询条件,查全部就用 {}
  • 性能更好,直接走聚合管道

完整示例:

from pymongo import MongoClient

client = MongoClient()
db = client.test_database

# 统计所有文档
total = db.users.count_documents({})

# 带条件统计
active_users = db.users.count_documents({"status": "active", "age": {"$gt": 18}})

print(f"总用户数: {total}")
print(f"活跃成年用户: {active_users}")

如果只是想知道集合大概有多少文档(不需要精确值),可以用 estimated_document_count(),这个更快:

approx_count = db.users.estimated_document_count()

一句话建议:把代码里所有的 .count() 都换成 .count_documents({}) 就行。


users = collection_users.find({‘regDate’: regDate}).count()
改成
users = collection_users.find({‘regDate’: regDate}).count_documents
users = collection_users.find({‘regDate’: regDate}).count_documents()
都不行啊

<br>def get_registered_user():<br> users = collection_users.count_documents({'regDate': regDate})<br> pprint.pprint("注册用户:" + str(users))<br>

mongo 这些提示我从来不管的

回到顶部