变量不会为很长的 pymongo ipython 保留值
Variables don't hold value for very long pymongo ipython
也许我应该重新启动计算机,但我的变量似乎正在丢失它们的值。一个简单的聚合似乎只能在短时间内保存我的数据库的内容。注意:我在 ipython 笔记本中执行此操作。
MONGODB_URI ='mongodb://username:password@***.mongolab.****/***'
client = MongoClient(MONGODB_URI)
db = client.get_default_database()
collectn = db.collection_name
pipe = [
{"$unwind":"$predictions"},
{"$match": {"predictions.t_obj": datetime.datetime(2015, 10, 29, 11, 0)}}
]
should_be_data = collectn.aggregate(pipe)
list(should_be_data)
// returns what we expect, i.e. data
list(should_be_data)
// returns []
为什么我的变量内容消失了?
should_be_data
不是 list/data-container,而是 生成器。
第一次 运行 list(should_be_data)
时,发电机已完全耗尽。此行消耗生成器中的元素,并将它们存储在新列表中。
第二次 运行 list(should_be_data)
时,生成器已经耗尽,因此 returns 没有更多的元素。
如果你想让它成为一个列表,只需替换
should_be_data = collectn.aggregate(pipe)
和
should_be_data = list(collectn.aggregate(pipe))
也许我应该重新启动计算机,但我的变量似乎正在丢失它们的值。一个简单的聚合似乎只能在短时间内保存我的数据库的内容。注意:我在 ipython 笔记本中执行此操作。
MONGODB_URI ='mongodb://username:password@***.mongolab.****/***'
client = MongoClient(MONGODB_URI)
db = client.get_default_database()
collectn = db.collection_name
pipe = [
{"$unwind":"$predictions"},
{"$match": {"predictions.t_obj": datetime.datetime(2015, 10, 29, 11, 0)}}
]
should_be_data = collectn.aggregate(pipe)
list(should_be_data)
// returns what we expect, i.e. data
list(should_be_data)
// returns []
为什么我的变量内容消失了?
should_be_data
不是 list/data-container,而是 生成器。
第一次 运行 list(should_be_data)
时,发电机已完全耗尽。此行消耗生成器中的元素,并将它们存储在新列表中。
第二次 运行 list(should_be_data)
时,生成器已经耗尽,因此 returns 没有更多的元素。
如果你想让它成为一个列表,只需替换
should_be_data = collectn.aggregate(pipe)
和
should_be_data = list(collectn.aggregate(pipe))