我試圖查詢一個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(...)' –