1

そこで、端末から実行してローカルの mongodb を実行$ mongodします。次にそれに接続し、次を使用して 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 個のオブジェクトのリストを返し、2 番目の print ステートメントは空のリストを返します ( [])。なんで?

4

1 に答える 1

1

この行:

things          = collection.find() 

Cursor実際には(docs )を返します:

Cursorこのクエリに対応する のインスタンスを返します。

したがって、listからを作成するとthings Cursor、クエリの結果全体findが返され、 にコピーされfirst_listます。2 回目は、Cursor格納されているインスタンスthingsが結果の最後にあるため、入力するものはもうありませんsecond_list

于 2013-08-19T12:05:48.127 に答える