1

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

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 语句返回一个空列表 ( [])。为什么?

4

1 回答 1

1

这一行:

things          = collection.find() 

实际上返回一个Cursor文档):

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

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

于 2013-08-19T12:05:48.127 回答