我试图查询一个MongoDB数据库并将两组结果('_id'和'Team')放入两个单独的列表中。List Comprehension返回空列表
import pymongo
client = pymongo.MongoClient('localhost:27017')
db = client['db_name']
query = {'Team': {'$exists': 1}}
projection = {'_id': 1, 'Team': 1}
data = db['collection_name'].find(query, projection) # line 9
id_list = [value for dict in data for key, value in dict.iteritems() if key == '_id']
teams_list = [value for dict in data for key, value in dict.iteritems() if key == 'Team']
print id_list
print teams_list
client.close()
对于上面的代码,'id_list'是预期的,但'teams_list'是空的。当我在'id_list'之前放置'teams_list'时,我得到预期的'teams_list'输出,'id_list'是空的。当我在两个列表解析之间重复数据调用(第9行)时,我得到了两个列表的预期输出。
任何想法为什么会发生这种情况?
据推测,'找到()'返回生成器,当你迭代它时会被消耗掉。 –
您需要将'data'定义为:'data = list(db ['collection_name']。find(query,projection))''。注意:'list(...)' –