You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PyMongo 2.0获取MongoDB中存储文档数量时遭遇AttributeError报错的技术咨询

解决PyMongo 2.0中获取集合文档数量报错的问题

嘿,这个坑我之前踩过!你遇到的AttributeError是因为在PyMongo 2.0版本里,find()返回的Cursor对象确实没有count()方法——这个方法是PyMongo 3.0之后才加到Cursor上的。那在2.0版本里怎么正确获取文档数量呢?给你两个实用的方案:

方案一:直接调用集合的count()方法(推荐)

不用先调用find(),直接在集合对象上调用count()就可以拿到整个集合的文档数。如果需要统计符合特定查询条件的文档数量,把查询字典作为参数传进去就行。修改后的代码如下:

db = myclient.database_sample
my_collection = db["database"]
# 获取整个集合的文档总数
mydoc = my_collection.count()
# 如果要带查询条件,比如统计age大于20的文档数:
# mydoc = my_collection.count({"age": {"$gt": 20}})
print("The number of documents in collection : ", mydoc)

这个方法性能更好,因为它直接在MongoDB服务器端完成计数,不需要把文档加载到客户端内存里。

方案二:使用Cursor的length()方法

如果你的业务场景必须先拿到Cursor对象再计数,PyMongo 2.0的Cursor提供了length()方法来实现类似功能。不过要注意,如果结果集很大,这个方法会把所有匹配的文档加载到客户端内存后再计数,性能不如集合的count()。代码示例:

db = myclient.database_sample
my_collection = db["database"]
cursor = my_collection.find()
mydoc = cursor.length()
print("The number of documents in collection : ", mydoc)

简单总结下:PyMongo 2.0里,集合对象有count(),Cursor对象有length(),但没有Cursor.count()——这就是你报错的原因啦。

内容的提问来源于stack exchange,提问作者Montana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 19:59:06