遍历MongoDB集合时遇'list'对象无'find'属性错误求助
解决MongoDB遍历集合时的
AttributeError: 'list' object has no attribute 'find'问题 嘿,我来帮你搞定这个报错!咱们先拆解下问题根源:
你代码里的collection=db.Collections这一行犯了个小错误——你的Tmobile数据库里根本没有名为Collections的集合,而且从报错信息里的['30dc6d110c7a0d3d371177ac0a3624bc_1', 'Mynew']能看出来,你误把集合名称的列表当成了MongoDB的集合对象,然后调用了find()方法,可列表类型根本没有这个查询方法,这就是报错的原因。
正确的实现代码
要遍历数据库中的所有集合并打印其中的文档,你需要先获取所有集合的名称,再逐个获取对应的集合对象执行查询。修改后的代码如下:
import pandas as pd import json from pandas.io.json import json_normalize from pymongo import MongoClient from pandas import DataFrame # 建立MongoDB连接 connection = MongoClient('localhost', 27017) db = connection.Tmobile # 获取数据库中所有集合的名称 collection_names = db.list_collection_names() # 遍历每个集合 for coll_name in collection_names: # 根据名称获取集合对象 collection = db[coll_name] print(f"--- 集合 {coll_name} 的内容 ---") # 遍历集合中的每个文档并打印 for doc in collection.find(): print(doc)
额外优化方案
如果你只想遍历指定的两个集合(而不是数据库里的所有集合),可以直接定义目标集合列表,这样更高效:
# 指定需要遍历的集合名称 target_collections = ['Mynew', '30dc6d110c7a0d3d371177ac0a3624bc_1'] for coll_name in target_collections: collection = db[coll_name] print(f"--- 集合 {coll_name} 的内容 ---") for doc in collection.find(): print(doc)
这样修改后,你就能正确遍历集合并打印其中的元素啦!
内容的提问来源于stack exchange,提问作者sri lakshmi
相关产品推荐
相关产品推荐

