PyMongo中的迭代是否移动光标?
我不太明白这里发生了什么,也不知道为什么。看起来当我在一个游标上进行迭代时,它会移动游标,因为我不能从同一个起点再运行第二个循环。我的例子是:
players = db.player.find({'parent_api__id' : 'stats', 'game__id':{'$in':games_list}, "played":"true"});
count = 0;
for c in players:
count = count + 1
for c in players:
game = db.game.find_one({'parent_api__id':'schedule', 'id':c['game__id']})
c['date'] = game['scheduled']
print c
在这个例子中,它从来没有进入第二个循环。如果我在顶部加一个打印语句,它也从来没有执行到那里,而且底部的打印 c 也没有执行。
现在如果我把包含计数的循环注释掉,变成这样:
players = db.player.find({'parent_api__id' : 'stats', 'game__id':{'$in':games_list}, "played":"true"});
#count = 0;
#for c in players:
# count = count + 1
for c in players:
game = db.game.find_one({'parent_api__id':'schedule', 'id':c['game__id']})
c['date'] = game['scheduled']
print c
那么它就能进入第二个循环,并且完全正常地迭代(边迭代边打印)。
这是为什么呢?我每次在两个循环之间都需要用另一个 players = db.player.find({'parent_api__id' : 'stats', 'game__id':{'$in':games_list}, "played":"true"}); 来重置游标吗?感觉这不是设计的初衷。
感谢你能提供的任何帮助!