17

MongoDB と RoR を使用してログ データを保存しています。私はデータを引き出して、結果をページングしようとしています。誰かが MongoDB でページングを行ったことがありますか、または私が始めるのに役立つ可能性のあるオンラインのリソースを知っていますか?

乾杯

イーフ

4

1 に答える 1

37

limit()MongoDBでのページ付けは、との組み合わせを使用して実行できますskip()

たとえば、アクティブなデータベースにusersというコレクションがあるとします。

>> db.users.find().limit(3)

これにより、最初の3つのユーザードキュメントのリストが取得されます。これは基本的に次のように書くのと同じであることに注意してください。

>> db.users.find().skip(0).limit(3)

次の3つでは、これを行うことができます。

>> db.users.find().skip(3).limit(3)

これにより、最初の3つのユーザーレコードがスキップされ、次の3つのユーザーレコードが提供されます。データベースにユーザーがもう1人しかいない場合でも、心配する必要はありません。MongoDBは、存在するデータのみを返すのに十分スマートであり、クラッシュすることはありません。

これはそのように一般化することができ、Webアプリケーションで行うこととほぼ同じです。PAGE_SIZE3に設定されたという変数があり、任意の変数があると仮定しますPAGE_NUMBER

>> db.users.find().skip(PAGE_SIZE * (PAGE_NUMBER - 1)).limit(PAGE_SIZE)

Ruby on Railsでこのメソッドを使用する方法について直接話すことはできませんが、RubyMongoDBライブラリがこれらのメソッドを公開しているのではないかと思います。

于 2010-01-14T06:40:01.577 に答える