mongodb pymongo从收集中消失的物品清单

时间:2013-08-19 11:38:00

标签: python mongodb pymongo

所以我通过终端运行$ mongod来运行本地mongodb。然后我连接到它并使用pymongo创建一个带有python脚本的小数据库:

import random
import string
import pymongo

conn            = pymongo.Connection("localhost", 27017)
collection      = conn.db.random_strings 

strings         = numbers = [] 
for i in range(0,1000):
    char_set        = string.ascii_uppercase + string.digits
    num_set         = [ str(num) for num in [0,1,2,3,4,5,6,7,8,9] ]
    strings.append( ''.join( random.sample( char_set * 6, 6 ) ) )
    numbers.append( int(''.join( random.sample( num_set * 6, 6 ) ) ) )
    collection.insert( { 'str' : strings[ i ], 'num' : numbers[ i ] } )

我现在有一个包含大量随机字符串和数字的数据库。现在出现了让我烦恼的事情,我不明白:

things          = collection.find() 
first_list      = list( things ) 
second_list     = list( things )
print( first_list )
print( second_list )

第一个print语句返回1000个对象的列表,而第二个print语句返回一个空列表([])。为什么?

1 个答案:

答案 0 :(得分:1)

这一行:

things          = collection.find() 

实际上会返回Cursordocs):

  

返回与此查询对应的Cursor实例。

因此,当您从list things创建Cursor时,会返回find查询的全部结果并将其复制到first_list。第二次,Cursor中存储的things实例位于结果的末尾,因此,不再需要填充second_list