2011-02-17 5 views
0

私は列 "id"、整数型のデータベースを持っています。私が使用しています:pymongo:next()とprev()を使用して結果を反復することはできますか?

レコードを= config.gSupei1Collection.find()ソート([( "ID"、pymongo.DESCENDING)])

カーソルを取得し、その後、私は

レコードを使用します。 = records [0]

最大のIDレコードを取得する。

「レコード」を取得した後、record.next()、record.prev()を使用してレコードの隣にあるレコードを取得できますか?私は文書を見つけることができません。

+1

試してみるとどうなりますか?あなたも '次の(レコード)'を試しましたか? –

+0

次の(レコード)はどういう意味ですか? –

+1

'records'がイテレータの場合、' next(records) '...は次のものを取得します。または、最初の2つが必要な場合は、レコード[0]とレコード[1]を実行できます。 –

答えて

1

レコードをループすることができます。レコードはイテレータではなく、実際のドキュメント(dict)ですが、結果はです。

あなたはこのような何か行うことができます。

for i, d in enumerate(records): 
    print i, d 

をそれとも、イテレータとして返されたレコードを使用したい場合は、あなたが何かを行うことができます。

n = records.next() 

するか、前方互換性のために:

n = next(records) 

レコードはイテレータです。あなたがループできるものを見るたびに、それは反復可能です。next()rewind()を呼び出すことができます。ただし、rewind()を呼び出すと、同じクエリがデータベースサーバーに再発行されますので注意してください。

FYIは、どのタイプが何かを確認する最も簡単な方法は、インタプリタでプログラムをプロトタイプ化することです。>> help(records)を実行し、pydocsを参照してください。

+0

ありがとうございますが、このように繰り返す余裕はありません。 –

+0

どういう意味ですか?レコードはイテレータです。 –

+0

パフォーマンスの問題では、すべてのレコードを反復できません。私はレコードセットにnext()とprev()レコードを取得したいだけです。だからpymongoはこれを簡単に行うことはできませんか? –

関連する問題