1

さまざまなクエリを印刷することに興味があります。私は次のコードを持っています。

start = datetime.datetime(2012, 2, 2, 6, 35, 6, 764) 

end = datetime.datetime(2012, 2, 2, 6, 55, 3, 381) 

for doc in db.model.find({'time': {'$gte': start, '$lt': end}}): 
    print doc 

それは仕事をし、基本的に私がデータを挿入した方法を印刷します。

私の質問はこれです:

クエリ全体の1つの要素を印刷することは可能ですか?たとえば、アイテム、日付、または挿入された別の入力のみを出力し、{'time':datetime.datime(....)、'input1':...、'item':。 ..}。そうしないと、mongodbに入れるためにすでに解析したmongodbクエリデータを再解析する必要がある場合、プログラムの速度が大幅に低下します。

ありがとうございました。

4

1 に答える 1

9

pymongoがどのように機能するかについていくつかの基本を見てみましょう。

データが挿入されたコレクションがMongoにあると仮定します。クエリを実行して、そのコレクションからデータを取得します。

cursor = db.model.find({'time': {'$gte': start, '$lt': end}})

「モデル」コレクションオブジェクトのメソッド検索は、オブジェクトを返しCursorます。これは、クエリとクエリ結果に関するすべての情報を保持するエンティティです。

したがって、クエリが実行され、次のステップは結果を取得することです。Mongoクエリの結果タイプは、メソッドごとに異なる場合があります。私たちの場合(メソッド)-結果は一連のJSONオブジェクト(イテレーターオブジェクト)であり、それぞれがPython言語の型でfind表されます。これは、結果を解析する必要がないdictことを意味します。結果はすでにdictに解析されています。

についてのもう一つのことCursor:それは怠惰です。それはあなたが要求に応じて結果を受け取ることを意味します。オブジェクトの場合、Cursorクエリでオブジェクトをフェッチするには、オブジェクトを反復処理する必要があります。

for result_object in cursor:
    print result_object   # result_object is a dict that holds JSON object
    result_object['_id']  # Mongo ObjectId of the result_object
    # result_object["<field_name>"]  # Value stored in a field named <fieldname>

一般的に、Pymongoチュートリアルを読んでみる必要があります。これは非常に短く、ドライバー全体がどのように機能するかを示しています。

于 2012-08-14T18:51:54.207 に答える