使用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
相关产品推荐
相关产品推荐

